动态SQL
一、动态SQL概述
在项目开发中,经常需要根据不同的条件拼接SQL语句,而MyBatis提供了对SQL语句动态的组装能力。MyBatis采用功能强大的基于OGNL(Object Graph Navigation Language,对象导航图语言)的表达式来动态完成SQL
属性名称 | 描述 |
---|---|
if | 单条件分支判断语句 |
choose,when,otherwise | 多条件分支判断语句,相当于Java中的case when语句 |
trim,where,set | 用于处理SQL拼装问题、辅助元素 |
foreach | 循环语句 |
if语句
IUserDao.java
/**
* 根据传入的参数条件来查询
* @param user 查询条件,有可能有用户名、有可能有密码、有可能有编号,有可能都有
* @return
*/
List<User> findUserByCondition(User user);
SqlMapConfig.xml
<select id="findUserByCondition" parameterType="cn.zhongger.daomain.User" resultType="cn.zhongger.daomain.User">
select * from users where 1=1
<if test="user_name != null">
and user_name=#{
user_name}
</if>
</select>
测试类中
@Test
public void testFindByCondition(){
User user = new User();
user.setUser_name("Zhongger");
List<User> userList = mapper.findUserByCondition(user);