SpringBoot-MySQL(结合XML,多条查询,动态SQL)
XML⽂件
在resource下⾯建⽴⼀个包,命名为mapper,再创建sring config⽂件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-////DTD Mapper 3.0//EN"
"/dtd/mybatis-3-mapper.dtd">
<mapper namespace="t.mapper.UserMapper">
<select id="getUserById" resultType="t.table.TableUser">
SELECT * FROM t1
WHERE id=#{id}
</select>
</mapper>
注意头部的两个标签,制定了xml的属性信息,是公⽤的
其次指定<mapper>标签表⽰其为在mapper中使⽤的信息,同时指定命名空间namespace(就是在mapper中定义的类名)
在<mapper>内即包含了由sql语句命名的标签,如<select>
在<select>中,需要指定id,即namespace中的类对应的⽅法名(此处就完成了XML⽂件中sql语句和mapper⽂件中类⽅法的连接)同时也需要指定resultType,来表⽰返回值的类型,如果是⾃定的实体类,需要完成写出,如t.table.TableUser
如果没有返回值,则不需要指定
对于⾃增长id(增加数据操作),将如下的@Option设置添加到<insert>标签内
@Options(useGeneratedKeys = true,keyProperty = "id",keyColumn = "id")
<insert id="addUser" useGeneratedKeys = true,keyProperty = "id",keyColumn = "id">
此时在select标签中就可以写⼊相应的select语句,但仍要使⽤mapper中定义的变量
(sql语句建议使⽤⼤写,并在必要的地⽅换⾏)
属性⽂件
mybatis.mapper-locations=classpath:**/mapper/*.xml
作⽤是扫描Mapper接⼝对应的XML⽂件,此处指的是resources下mapper位置对应的所有xml⽂件
使⽤如上⽅法来指定项⽬中的mapper
logging.t.mapper=debug
使⽤logging.level来对mapper的执⾏进⾏输出
http请求调⽤了mapper,其会在idea控制台输出程序的执⾏信息,即调试⽇志
mapper
package t.mapper;
import t.table.TableUser;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Component;
@Mapper
@Component(value = "UserMapper")
public interface UserMapper {
//select
TableUser getUserById(@Param("id") Integer id);
此时就可以不使⽤注解@Select进⾏加载,⽽可以直接定义⽅法
动态sql语句
mapper语句
//select by page
List<TableUser> getUserByPage(@Param("UserName") String UserName);
此处会返回多条数据,所以使⽤LIst<entity对象>来接收对象的多个数据
注意此处需要调⽤如下库
import java.util.List;
系统有时会⾃动调⽤如下库,会报错
import java.awt.*;
controller语句
@RequestMapping(value = "/getUserByPage")
@ResponseBody
public Object getUserByPage(@RequestParam("UserName") String UserName){
List<TableUser> users = UserByPage(UserName);
return users;spring怎么读取xml文件
}
此处同样使⽤LIst<entity对象>实例后的user对象接收多条数据
sql语句
select * from sys_test
where 1=1
<if test="name != null">
and name=#{name}
</if>
  </select>
<where>标签⾥的内容会将select * from sys_test的数据进⼀步细分
在其内部添加<if>,注意条件选择⼀般会加上and,表⽰条件符合则继续执⾏(sql中每个语句前⾯都要加个关键字)
所以上述的执⾏就是如果test中的name = != null成⽴,则执⾏where 1=1 and name = #{name}
(1=1的作⽤就是后⾯可以使⽤and来连接多个条件)
此处就是if条件成⽴,则共同执⾏1=1和name=#{name}因为此处的where没有<>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。