本文共 1950 字,大约阅读时间需要 6 分钟。
素材来源:西部开源秦疆老师,特此感谢
MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦。
动态SQL就是指根据不同查询条件,生成不同的SQL语句
在 MyBatis 之前的版本中,有很多元素需要花时间了解。MyBatis 3 大大精简了元素种类,现在只需学习原来一半的元素便可。MyBatis 采用功能强大的基于 OGNL 的表达式来淘汰其它大部分元素。
参数test:里面的表达式如果为ture则执行,否则不执行
if(title != null)AND title like #{title}
有时我们不想应用到所有的条件语句,而只想从中择其一项。针对这种情况,MyBatis 提供了 choose 元素,它有点像 Java 中的 switch 语句。
...
update Author where id=#{id} username=#{username}, password=#{password}, email=#{email}, bio=#{bio}
...
测试模糊查询
接口编写
//模糊查询,可以通过自定义条件查询ListgetUserByLike(Map map);
映射文件编写
测试类
@Testpublic void getUserByLike(){ SqlSession sqlSession = MyBatisUtils.getSqlSession(); UserDao mapper = sqlSession.getMapper(UserDao.class); Mapmap = new HashMap (); map.put("name","秦"); map.put("id",1); List users = mapper.getUserByLike(map); for (User user : users) { System.out.println(user); }}
注意点:太过复杂的逻辑不建议使用动态SQL,简单的话可以直接使用动态SQL实现;
如果开启缓存,
在mapper映射文件中,添加一个标签
如果要CRUD操作要查询结果需要缓存,可以使用usrCache;
转载地址:http://poiwi.baihongyu.com/