mybatis框架xml中trim中的prefix与suffix等标签的作用
1.prefix 前缀增加的内容
2.suffix 后缀增加的内容
3.prefixOverrides 前缀需要覆盖的内容,一般是第一个判断条件前面的多余的结构,如:第一个判断条件前面多了 ‘and
’
select * from User where name='zhangsan' and age='20';
<select id='queryUser'>select * from User<trim prefix='where' prefixOverrides='and'><if test="name != null and name != ''">name = #{name}</if><if test="age !=null and age !=''">and age = #{age}</if></trim>
<select>
第一个条件前面没有任何符号,第二个条件要加上and,否则sql语句会报错。很理想的状态是第一个和第二个都有值,但是既然判断,说明也可能会没有值,当第一个name没有值的时候,这个时候sql语句就会是
select * from User where and age=''
,很明显这个sql语句语法存在问题。在这里标签属性prefixOverrides
就起作用了,它会让前缀where
覆盖掉第一个and
。覆盖之后的是:select * from User where age='';
4.suffixOverrides 后缀需要覆盖的内容,一般是最后一个数据的后面符号,如:set值的时候,最后一个值的后面多一个逗号‘,’
<insert id="insertSelective" parameterType="org.javaboy.vhr.model.Salary">insert into salary<trim prefix="(" suffix=")" suffixOverrides=","><if test="id != null">id,</if><if test="basicSalary != null">basicSalary,</if><if test="bonus != null">bonus,</if><if test="lunchSalary != null">lunchSalary,</if><if test="trafficSalary != null">trafficSalary,<if test="name != null">name,</if></trim><trim prefix="values (" suffix=")" suffixOverrides=","><if test="id != null">#{id,jdbcType=INTEGER},</if><if test="basicSalary != null">#{basicSalary,jdbcType=INTEGER},</if><if test="bonus != null">#{bonus,jdbcType=INTEGER},</if><if test="lunchSalary != null">#{lunchSalary,jdbcType=INTEGER},</if><if test="trafficSalary != null">#{trafficSalary,jdbcType=INTEGER},</if><if test="name != null">#{name,jdbcType=VARCHAR},</if></trim></insert>
加了
suffixOverrides=","
结果: insert into salary (id,basicSalary,bonus,lunchSalary,trafficSalary,name) values (#{id},#{basicSalary},#{bonus},#{lunchSalary},#{trafficSalary},#{name})不加
suffixOverrides=","
结果: insert into salary (id,basicSalary,bonus,lunchSalary,trafficSalary,name,
) values (#{id},#{basicSalary},#{bonus},#{lunchSalary},#{trafficSalary},#{name},
)加了
suffixOverrides=","
的话,本例中最后一个条件中的逗号“,”会被后缀覆盖掉
mybatis框架xml中trim中的prefix与suffix等标签的作用相关推荐
- myBatis的xml映射文件中传入list集合与数组做条件
mybatis的xml映射文件中传入list集合与数组做条件 1.传list集合参数 1.1sql映射: <select id="queryDeptListByBankLevelAnd ...
- Mybatis框架面试典籍30+ | 大别山码将
Mybatis 什么是MyBatis?优缺点及适用场景 Mybatis 是一款优秀的持久层框架,它支持自定义 SQL.存储过程以及高级映射.MyBatis 免除了几乎所有的 JDBC 代码以及设置参数 ...
- MyBatis 框架的思想及其第一次使用
MyBatis 框架的思想及其第一次使用 引言 ORM 框架 MyBatis 核心 MyBatis 的第一次使用 一.创建一个 Spring MVC 项目 二.搭好配置文件 概览步骤 步骤1 步骤2 ...
- 【MyBatis框架】核心配置文件讲解
14天阅读挑战赛 目录 1. 引言 2. 主要元素 3. 常用配置元素介绍 3.1 < properties > 3.2 < settings > 3.3 < typeA ...
- mybatis框架的介绍及使用
mybatis是什么? 1.mybatis 是一个持久层框架, 主要用于来对***数据库***进行操作,mybtais 底层还是对jdbc的封装. 在工作中只是程序员不需要关注底层怎么封装,需要会使用 ...
- (转)MyBatis框架的学习(四)——Mapper.xml文件中的输入和输出映射以及动态sql
http://blog.csdn.net/yerenyuan_pku/article/details/71893689 前面对MyBatis框架的学习中,我们对Mapper.xml映射文件多少有些了解 ...
- mybatis中xml之trim属性
mybatis的xml中trim标签有四个属性 1.prefix 前缀增加的内容 2.suffix 后缀增加的内容 3.prefixOverrides 前缀需要覆盖的内容,一般是第一个判断条件前面的多 ...
- java 获取sqlsession_获取Java的MyBatis框架项目中的SqlSession的方法
从XML中构建SqlSessionFactory从XML文件中构建SqlSessionFactory的实例非常简单.这里建议你使用类路径下的资源文件来配置. String resource = &qu ...
- flink 流式处理中如何集成mybatis框架
flink 中自身虽然实现了大量的connectors,如下图所示,也实现了jdbc的connector,可以通过jdbc 去操作数据库,但是flink-jdbc包中对数据库的操作是以ROW来操作并且 ...
- 关于mybatis的xml文件中使用 >= 或者 <= 号报错的解决方案
关于mybatis的xml文件中使用 >= 或者 <= 号报错的解决方案 参考文章: (1)关于mybatis的xml文件中使用 >= 或者 <= 号报错的解决方案 (2)ht ...
最新文章
- npm-run 自动化
- mapreduce.job.reduce.slowstart.completedmaps
- 企业运维监控平台架构设计与实现
- ACR2010_MTX单药治疗临床疗效良好但放射学进展的早期RA患者的预测因素和临床意义...
- textarea 转换 html,textarea html标签转换为纯文本
- 四十、ETL工具的输入步骤
- Django从理论到实战(part1)--虚拟环境
- Win7_刻录DVD
- android仿新浪引导界面
- python的运行方式有哪两种_Python基础:Python运行的两种基本方式
- 2017 10 13
- 学习yaf(二) 使用Bootstrap
- HDU 4630 No Pain No Game (线段树+离线)
- Linux设备驱动开发详解
- 海康威视4G球机对接萤石云平台获取直播视频列表 ----- java
- 微信公众号涨粉攻略大全及实战
- PCB中的SOLD MASK和阻抗开窗
- LZY的CQU水下机器人视觉学习笔记(一)
- ulp(unit in the last place)是什么意思
- do还是doing imagine加to_“imagine to do”与“imagine doing”的区别是什么?