MyBatis 动态元素 if元素

<if>元素是比较常用的判断语句

在实际应用中,可能会通过多个条件来查询某个数据。通过if元素可以实现多个条件查询某个数据。

CM1.xml(一个mapper)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!-- namespace表示命名空间-->
<mapper namespace="com.itheima.mapper.CM1">
	<!-- parameterType 传入的参数类型 -->
	<!-- resultType 接收的参数类型 -->
	<select id="A" parameterType="com.itheima.po.Account" resultType="com.itheima.po.Account">
	
		select * from account where 1=1
		
		<if test="username != null and username != '' ">
			and username like concat('%',#{username},'%')
		</if>
		
		<if test="balance != null and balance >= 0">
			and balance > #{balance}
		</if>
		<!--i f标签的test属性为判断的条件-->
	</select>
</mapper>

拼接手法:

基础的SQL语句:

select * from account where 1=1

< if test="username != null and username != ‘’ " >
如果用户名(username)不为空的话,SQL语句为:

select * from account where 1=1 and username like concat('%',#{username},'%')

< if test=“balance != null and balance >= 0”>
如果balance(余额)也不为空且大于0的话,SQL语句为:

select * from account where 1=1 and username like concat('%',#{username},'%') and balance > #{balance}

如果前一个if条件不成立,后一个条件成立的话,SQL语句为:

select * from account where 1=1 and balance > #{balance}

小小的贴段代码

@Test
	public void findTest()  {
		SqlSession session=MyBatisUtils.getSqlSession();
		
		Account account=new Account();
		account.setUsername("王");
		account.setBalance(700);
		
		List<Account> users=session.selectList("com.itheima.mapper.CM1.A", account);
		session.close();
		
		for(Account a:users) {
			System.out.println(a.toString());
		}
	}

结果
也许图片会失效哦

MyBatis动态SQL中的一些元素 if、set、trim、choose、foreach、bind

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值