老司机学习MyBatis之动态SQL使用trim自定义字符串截取

MyBatis教程 同时被 2 个专栏收录
32 篇文章 0 订阅

一、前言

前面一个章节讲到,如果where标签里面,and或者or写在后面,最后字符串拼串后,如果最后一个条件没有加上,可能会出现SQL多出 and或者or 的情形。那我们是不是没有办法解决这种问题的产生,事实上MyBatis为我们提供了另外一种标签trim,可以简单粗暴的解决这个问题,下面我们通过案例来看看如何实现?

二、案例

我们先来看看前面使用where标签时的情景


现在我们对上面的XML做如下改造


在EmpMapper.java文件中增加findEmpByConditionsTrim方法

/**
* 根据部门ID查询该部门下的所有员工信息
* @param id
 * @return
 */
public Emp findEmpByConditionsTrim(Emp emp);

修改MybatisTest类,增加测试方法testFindEmpByConditionTrim

@Test
public void testFindEmpByConditionTrim() throws IOException {
	SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
	SqlSession openSession = sqlSessionFactory.openSession();
	try {
		EmpMapper mapper = openSession.getMapper(EmpMapper.class);
		Emp emp = new Emp(null,"queen","queen@sina.com",null);
		Emp empFind = mapper.findEmpByConditionsTrim(emp);
		System.out.println(empFind);
	} finally {
		openSession.close();
	}
 
}

测试方法,控制台打印结果如下

2017-08-12 22:07:23,773 [main] [com.queen.mybatis.mapper.EmpMapper.findEmpByConditionsTrim]-[DEBUG] ==>  Preparing: select id,emp_name empName,emp_email empEmail, dept_id deptId from t_emp where emp_name=? and emp_name=? 
2017-08-12 22:07:23,825 [main] [com.queen.mybatis.mapper.EmpMapper.findEmpByConditionsTrim]-[DEBUG] ==> Parameters: queen(String), queen(String)
2017-08-12 22:07:23,865 [main] [com.queen.mybatis.mapper.EmpMapper.findEmpByConditionsTrim]-[DEBUG] <==      Total: 1
Emp [id=1, empName=queen, empEmail=queen@sina.com, deptId=1]

如上,SQL打印正常,即使拼串过程中and或者or写在后面,也能够实现自定义的截取规则,大家可以试着将suffixOverrides=”and”去掉,然后测试一下,会报错哟。



=======欢迎大家拍砖,小手一抖,多多点赞哟!=======

版权声明:本文为博主原创文章,允许转载,但转载必须标明出处。


  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值