关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

Mybatis 动态sql的编写|开启二级缓存(上)

发布时间:2023-06-28 10:00:52
前言 上篇博文把表连接查询和三种对应关系的写法记录总结了,本篇要把 mybatis 中的动态sql 的使用以及缓存知识记录下来。 动态SQL 在解释 where if 标签之前先进行一个模糊查询的操作。 模糊查询 如下面一张表: 查询所有 李 姓人员的信息: 在mapper接口中定义方法: List selectName(String name); 在 xml 中编写 sql 语句: 这里的 concat('%', #{name}, '%') 写法使用了字符串拼接的技巧,这样在查询语句里就是 %name% 的模糊查询了。 如果这样写:'%#{name}%' 是不行的,#{}会失效。 编写测试类: 测试结果: 可以看到所有 李 姓的人信息被查询到了。 where if 标签 姓李的太多,那么我们可以加一个年龄范围,于是需要增加两个参数: 这里要注意,参数在两个以上需要使用 注解 来绑定。 重点来看 xml中的 sql 语句: 可以看到这里的 where 关键字变成了一个标签 ,这是因为: 如果这三个参数都不填写的话,where 下的条件就不会起作用, 此条 sql 就变成了查询所有。 显然,查询所有的语法里是没有 where 关键字的,因此使用标签代替。 除了使用 标签之外,也可以使用类似 1=1 加 and 的方法拼接。 比如: select * from t_person where 1=1 and ... 此外,where 标签还可以去除多余的 and 前缀。 if 标签用来做判断,test 里写判断的条件,标签内写判断成功后的 sql 语句: 这里就是判断名字是否为空以及年龄的取值范围是否合理: test 里面的符号正常写,and 和 or 代表并且和或者。 sql 语句里,> 是大于的意思,< 是小于的意思。 编写测试类: 测试结果: 很明显,年龄在 20~28 且姓李的只有 “李白” 自己。

/template/Home/leiyu/PC/Static