使用MyBatis实现条件查询
1.SQL映射文件:
MyBatis真正的强大之处就在于SQL映射语句,MyBatis专注于SQL,对于开发人员来说也是极大限度的进行SQL调优,以保证性能。下面是SQL映射文件的几个顶级元素的配置:
1.mapper:映射文件的根节点,只有一个属性namespace(命名空间),作用如下:
(1)用于区分不同的mapper,全局唯一。
(2)绑定DAO接口,即面向接口编程,当绑定一个接口,就不用写此接口的实现类,会通过接口的完全限定名找到对应的mapper配置来执行SQL语句,所以,namespace的命名必须要写接口的完全限定名。
2.cache:配置给定命名空间的缓存。
3.cache-ref:从其他命名空间引用缓存配置。
4.resultMap:用来描述数据库结果集和对象的对应关系。
5.sql:可以重用的SQL块,也可以被其他语句引用。
6.insert:映射插入语句。
7.update:更新映射语句。
8.delete:删除映射语句。
9.select:映射查询语句。
2.使用select完成单条件查询
<select id = "GetUserByName" resultType = "User" parameterType = "string">
select * from user where name like concat('%',#{name},'%') //按照姓名模糊查询。
</select>
这是一个id为GetUserByName的映射语句,参数类型为string,返回类型为User。
#{参数名}:告诉MyBatis生成的PreparedStatement参数,相对于JDBC,改参数被标识为‘?’。
id:命名空间的唯一标识符,可以被用来引用这条语句。
parameterType:表示查询语句传入参数的类型和完全限定名或别名。支持基础数据类型和复杂数据类型。上述实例中传入的参数是一个别名,代表String。
别名与Java类型映射
别名 映射的类型 别名 映射的类型string String double Double
byte Byte float Float
long Long boolean Boolean
short Short date Date
int Integer map Map
integer Integer hashmap HashMap
arraylist ArrayList list List
resultType:查询语句返回结果类型的完全限定名或别名。别名使用方式和parameterType是一样的。
2.使用select完成多条件查询
使用复杂数据类型,把条件参数封装为对象、Map进行入参。
不管什么类型的参数,或者多少个参数,都可以封装为一个Map进行入参,通过Map的key进行获取传入的值。
1 <select resultType="User" 2 parameterType="map"> 3 select * from smbms_user where userName like 4 CONCAT('%',#{userName},'%') 5 and userRole = #{userRole} 6 </select>