建议安装Mybatis-plus
目录结构
Mapper.xml
文件是真实的SQL语句对应关系
MyBatis
生成的DAO
层文件目录如下:
1 | . |
常用查询方法
- 如果数据库表中有
TEXT/BLOB
类型的字段,那么在获取列表的时候(selectByExample
)默认不会返回这些字段,需要用名称中含有BLOB
的方法才能获取到
Mybatis
默认会生成如下几个常用的查询方法
1 | public interface Table1Mapper { |
复杂查询方法
- 复杂的查询方法有可能需要自己写SQL,
MyBatis
默认的SQL(xml文件里面的)其实非常少,完全比不上动态语言的ORM
编写自定义的查询方法
为了避免每次
MyBatis
执行后都覆盖自己添加的自定义方法,所以最好将自定义查询方法写在mapper/ext
文件夹中,但是这样做有个缺点就是字段如果有修改得改一下其对应的xml
文件以防止使用这里面的方法时字段缺失因为配置是
xml
文件,所以对于特殊符号需要使用XML
的转义方法,例如:1
start_time <![CDATA[ <= ]]> #{endTimestamp} // 转义小于符号
如果是简单的SQL语句,可以不用XML文件,而是直接这样子写
1
2
Integer countMyRecord(; String userName)首先编写XML文件,例如
MyExtMapper.xml
,该文件可以将之前该表对应的XML文件复制过来,删除掉原来XML中已经存在的方法定义,可以直接根据id判断,例如<select id="selectByExample"...>
就是selectByExample
方法的定义。删除完成后按照之前的语法定义自己的查询方法即可,然后把id拿到再建一个同名的接口文件MyExtMapper.java
即可。例如一个自定义的统计接口,可以这样写:
1 | // 需要注意MyExtMappper.xml还需要将MyExtMapper的namepsace设置进到mapper的namespace属性里面去 |
复杂OR查询
1 | // 不支持a=? AND (b=? OR c=?)的语法,但是支持(a=? AND b=?) OR (a=? AND c=?),例如 |