首言:
我们已经学习了MyBatis-Plus核心功能之一的条件构造器,讲解了条件构造器各个方法的使用。本章节将讲解配置mapper接口映射的mapper.xml文件,编写、执行动态SQL操作。以及讲解MyBatis-Plus分页插件进行分页查询。
一、映射文件XML
我们在类资源目录下新建mappers目录,在该目录下新建SysLogMapper.xml文件,在文件中添加头部声明和命名空间
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.banxun.demo.mapper.SysLogMapper">
</mapper>
在application.properties配置文件中Mapper所对应的 XML文件位置
mybatis-plus.mapper-locations=classpath:/mappers/*.xml
Maven 多模块项目的扫描路径需以
classpath*:
开头 (即加载多个 jar 包下的 XML 文件)
配置完成后,我们在SysLogMapper接口中定义一个方法
public interface SysLogMapper extends BaseMapper<SysLog> {
List<SysLog> queryLog(String personName);
}
在SysLogMapper.xml文件中定义方法映射的sql
<select id="queryLog" resultType="com.banxun.demo.entity.SysLog">
select * from t_sys_log where f_option_person = #{personName}
</select>
我们在junit方法测试调用下此方法
@Test
public void contextLoads() {
List<SysLog> logList = sysLogMapper.queryLog("admin");
for (SysLog sysLog : logList) {
System.out.println(sysLog.getOptionPerson());
}
}
我们可以执行结果失败,报空指针异常。我们打断点看下logList的情况
通过断点可以看到,logList不为空,大小为20,但集全元素 All elements are null。这是因为我们这表张的字段名都有一个前缀"f_",无法自动映射SysLog对象的属性。在自定义的sql脚本里,将*改为字段名并加上同属性名的别名。这里我们只给f_option_person加上别名optionPerson。
<select id="queryLog"