MyBatis动态sql_trim自定义字符串截取
来源:互联网 发布:手机网络初始化失败 编辑:程序博客网 时间:2024/06/06 00:27
MyBatis动态sql_trim自定义字符串截取
继续上次文章http://blog.csdn.net/zhupengqq/article/details/78632444
EmployeeMapperDynamicSQL.java
package com.cn.mybatis.dao;import java.util.List;import com.cn.zhu.bean.Employee;public interface EmployeeMapperDynamicSQL {//<!-- 查询员工,要求,携带了哪个字段查询条件就带上这个字段的值 -->public List<Employee> getEmpsByConditionIf(Employee employee);//测试trim截取字符串public List<Employee> getEmpsByConditionTrim(Employee employee);}
EmployeeMapperDynamicSQL.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.cn.mybatis.dao.EmployeeMapperDynamicSQL"><!-- public List<Employee> getEmpsByConditionTrim(Employee employee); --><select id="getEmpsByConditionTrim" resultType="com.cn.zhu.bean.Employee"> select * from tbl_employee <!-- 后面多出的and或者or where标签不能解决 prefix="" 前缀: trim标签体中是整个字符串拼串后的结果 prefix给拼串后的整个字符加一个前缀 prefixOverrides="" 前缀覆盖: 去掉整个字符串前面多余的字符 suffixOverrides="" 后缀覆盖 去掉整个字符串前面多余的字符 suffix=""后缀 给拼串后的整个字符加一个后缀 --> <!-- 自定义字符串截取规则 --> <trim prefix="where" suffixOverrides="and"> <if test="id!=null"> id=#{id} and </if><if test="lastName!=null && lastName!=""">last_name like #{lastName} and </if><if test="email !=null and email.trim()!=""">email=#{email} and </if><!-- ognl 会进行字符串和数字的转换 "0"==0 --><if test="gender==0 or gender==1"> gender=#{gender} </if> </trim> </select></mapper>MyBatisTest.java
@Testpublic void testDynamicSql() throws IOException{SqlSessionFactory sqlSessionFactory=getSqlSessionFactory();SqlSession openSession=sqlSessionFactory.openSession();try {EmployeeMapperDynamicSQL mapper=openSession.getMapper(EmployeeMapperDynamicSQL.class);//测试if where Employee employee=new Employee(null, "%h%", null, null);List<Employee> emps= mapper.getEmpsByConditionIf(employee);for(Employee emp: emps)System.out.println(emp);// 查询的时候如果某些条件没带可能sql拼装会有问题// 1.给where 后面加上1=1,以后的条件都and //2. mybatis 使用where 标签将所有的查询条件包括在内。// mybatis 就会将where标签后面第一个and 去掉// where只会去掉第一个多出来的and 或者 orList<Employee> emps2=mapper.getEmpsByConditionTrim(employee);for(Employee emp: emps2 ){System.out.println(emp);}//测试Trim} catch (Exception e) {// TODO: handle exceptione.printStackTrace();}}
更多文章请关注微信公众号:
阅读全文
0 0
- MyBatis动态sql_trim自定义字符串截取
- orcle字符串截取自定义函数
- 动态截取集合字符串算法
- 截取字符串长度的自定义标签
- 【未接迷】Freemarker自定义字符串截取标签
- Android自定义View drawText绘制截取字符串
- 自定义“三级联动”(截取字符串匹配)
- 字符串截取符合TextView自定义样式
- ABAP自定义截取字符串长度函数
- mybatis动态执行自定义sql
- angular 自定义过滤器>>截取字符串、去除字符串中的空格
- mybatis自定义动态sql传入对象
- css截取截取字符串
- PHP基础12-自定义函数截取中文字符串
- 如何用SQL动态截取字符串的长度?
- 字符串截取
- 字符串截取
- 字符串截取
- laravel框架集成PHPExcel讲解及demo
- spring框架的定时器应用
- Can't create table #sql-2e4_14.frm' (errno: 150)--创建外键时发生的错误
- CentOS 7 创建eclipse快捷方式
- Add Two Numbers
- MyBatis动态sql_trim自定义字符串截取
- 机器学习中的超参数
- MOSFET管开关电路基本知识总结
- 注册系统管理员
- hadoop软件大全下载整理(更新中)
- android进阶-Android Scroll分析
- <c:out value="<b>没有进行转换<b>" escapeXml="false"><c:out>标签中的escapeXML属性
- 6.Python入门之序列
- 关于C++的翻书回顾