MyBatis快速入门(七):动态SQL语句

在执行查询操作时查询条件可能比较复杂,比如查询条件包括:username、sex、address。此时需要在sql语句中加上这三个查询条件。但是这三个条件来自用户输入,可能会缺少某些条件,可能只输入了一个,也可能输入了三个,此时使用动态SQL语句就可以解决这个问题,动态SQL语句会根据条件拼接sql语句。

if标签

if标签主要是判断某个条件是否存在,如下的示例中表示根据usernameaddress查询用户,示例中使用别名:

<select id="findByUser" resultType="user" parameterType="user">
    select * from user where 1=1 
    <if test="username!=null and username != '' ">
        and username like #{username}
    </if>
    <if test="address != null">
        and address like #{address}
    </if>
</select>

详解:

  • test属性:判断条件,其值为参数对象的属性名,如果参数是包装类的对象要使用OGNL表达式的写法,例如user.username
  • 1=1的作用:防止出现类似where and id=1或者只有where而其后没有条件的情况发生。

在持久层接口(UserDao)中添加findByUser方法,如下:

/** 
 * 根据用户信息,查询用户
 * @param user 
 * @return 
 */ 
List<User> findByUser(User user);

在测试类中添加如下测试方法,运行该测试方法即可看效果:

/**
 * 测试根据用户信息,查询用户
 */
@Test
public void testFindByUser() {
   
    User u = new User();
    u.setUsername("%王%");
    List<User> users = userDao
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值