Mybaits动态sql之trim标签

博客介绍了MyBatis动态SQL中的trim标签,它可在前后添加SQL语句,还能去除前后缀,并且可以替代where和set标签,文中还提到了用trim标签完成where标签功能及相关测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mybaits动态sql之trim标签

trim 标签可以在前面/后面添加sql,去前/后缀。通过trim标签可以替代 where,set标签。

trim标签完成where标签的功能

  		
  		<sql id="baseSql">
  			id , name,age
  		</sql>
  
  		<select id="query" resultType="user" parameterType="user">
  			select 
  				<include refid="baseSql"></include>
  			from 
  				t_user
  				
			<trim prefix=" where " prefixOverrides="and | or">		   
	  			<if test="name != null">
	  				and name=#{name}
	  			</if>
	  			<if test="age > 0">
	  				and age = #{age}
	  			</if>
	  			<if test="id!=null and id > 0">
	  				and id = #{id}
	  			</if>
  			</trim>  	
  		</select>

测试一下

	@Test
	public void test1() throws IOException {
		InputStream in = Resources.getResourceAsStream("mybatis-cfg.xml");
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
		SqlSession session = factory.openSession(true);
		// 获取代理类
		UserMapper dao = session.getMapper(UserMapper.class);
		User user = new User();
		//user.setName("李四");
		//user.setId(4);
		//user.setAge(22);
		List<User> list = dao.query(user);
		for (User user2 : list) {
			System.out.println(user2);
		}
		session.close();
	}

输出打印粘贴

[QC] DEBUG [main] org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(159) | ==>  Preparing: select id , name,age from t_user 
[QC] DEBUG [main] org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(159) | ==> Parameters: 
[QC] DEBUG [main] org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(159) | <==      Total: 26
User [id=1, name=猴子, age=18]
User [id=37, name=cjw, age=18]
User [id=39, name=cjw, age=18]
User [id=40, name=cjw, age=18]
User [id=41, name=zhangsan, age=25]
User [id=42, name=zhangsan1, age=26]
User [id=43, name=zhangsan2, age=27]
User [id=44, name=uw, age=22]

项目打包 提取码:hm32 环境:eclipse,maven

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值