本文章是基于 tk.mybatis 和 mybatis 的整合,不打算说基本的增删改操作,因为这些已经被 tk.mybatis 实现了,我们继承它的接口就可以直接调用。
关于如何整合 springboot + mybatis + tk.mybatis 可直接参考我的例子项目,只有这三项的整合,非常适合于专项研究。
gitee: https://gitee.com/sanri/example/tree/master/test-mybatis
使用数据库为 mysql5.6 版本,sql 脚本可以在这里找到
https://gitee.com/sanri/example/tree/master/test-mybatis/sql/test.sqlList<Emp> dateParam(Date birthday);
<select id="dateParam" resultMap="EmpResultMap"> select * from emp where hiredate < #{birthday} </select>
注意:大于号和小于号需要写转义形式,不然会报错,要不就整个语句用 CDATA 包起来
也可以在接口方法中使用@param注解给参数取别名像这样:
// 集合类型也需要用 @Param 来标记 void batchUpdateUseInsert(@Param("batchSubList") List<Batch> batchSubList);
List<Emp> selectEmpsUseParam(Emp emp);
<select id="selectEmpsUseParam" resultMap="EmpResultMap"> select * from emp <where> <if test="ename != null and ename != ''"> and ename like '%${ename}%' </if> <if test="deptNo != null and deptNo != ''"> and deptNo = #{deptNo} </if> </where> </select>
List<Emp> selectEmpsUseMap(Map<String,Object> map);
<select id="selectEmpsUseMap" resultMap="EmpResultMap"> select * from emp <where> <if test="ename != null and ename != ''"> and ename like '%${ename}%' </if> <if test="deptNo != null and deptNo != ''"> and deptNo = #{deptNo} </if> </where> </select>
#{} 和 ${} 在预编译中的处理是不一样的。#{} 在预处理时,会把参数部分用一个占位符 ? 代替 主要是为了防止 SQL 注入 ,建议使用 #{}
实体类
/** * mybatis 一对一关联查询 */ @Data @ToString(callSuper = true) public class EmpDept extends Emp{ private Dept dept; }
xml 配置
<resultMap id="EmpDeptResultMap" type="empDept" extends="EmpResultMap"> <association property="dept" javaType="dept" resultMap="DeptResultMap" /> </resultMap> <select id="selectOne2One" resultMap="EmpDeptResultMap"> select ename,comm,mgr,empno,job,hiredate,sal, loc,dname,d.deptNo from emp e inner join dept d on d.deptNo = e.deptNo where e.ename = #{ename} </select>
实体类
@Data @ToString(callSuper = true) public class DeptEmps extends Dept{ private List<Emp> emps; }
xml 配置
<resultMap id="DeptEmpsResultMap" type="com.sanri.test.testmybatis.po.DeptEmps" extends="DeptResultMap"> <collection property="emps" resultMap="EmpResultMap"/> </resultMap> <select id="selectOne2Multi" resultMap="DeptEmpsResultMap"> select loc,dname,d.deptNo, ename,comm,mgr,empno,job,hiredate,sal from dept d inner join emp e on e.deptNo = d.deptNo where d.deptNo = #{deptNo} </select>
参考文章 : https://blog.csdn.net/abc997995674/article/details/80885591
使用 mybatis-spring-boot-starter
后,除了数据库驱动、用户名、密码需要配置一下之外,几乎不需要任何配置就可以运行 mybatis 应用。但有几个配置项是需要注意的。
这个持续更新
# 不需要自动下划线转驼峰 ,默认是 false ;就怕别人配置了 mybatis.configuration.mapUnderscoreToCamelCase=false # 配置 mapper 级别的缓存,默认打开 mybatis.configuration.cacheEnabled=true
github: https://gitee.com/sanri/example/tree/master/test-mybatis
创作不易,希望可以推广下我的小工具,很实用的解决项目中的一些麻烦的事情,欢迎来 github 点星,fork
gitee 地址: https://gitee.com/sanri/sanri-tools-maven
博客地址: https://blog.csdn.net/sanri1993/article/details/98664034