trim标记是一个格式化的标记,可以完成select,update,insert语句的格式化操作。trim元素的主要功能有四个:(1)可以在包含的内容前加上某些前缀,与之对应的属性是prefix;(2)也可以在包含的内容后加上某写后缀,与之对应的属性是suffix;(3)可以把包含内容的首部某些内容覆盖,即忽略,对应的属性是prefixOverride...

bind元素可以从OGNL表达式中创建一个变量并将其绑定到上下文。<select id="selectEmployeeLikeName" resultType="cn.mybati.domain.Employee"><bind name="pattern" value=&qu...

关于动态SQL另外一个常用的操作就是需要对一个集合进行遍历,通常发生在构建IN条件语句时。<select id="selectEmployeeIn" resultType="cn.mybatis.domain.Employee"> SELECT * FROM tb_employee WHERE ID ...

关于动态更新语句还可以使用set元素。set元素可以被用于动态包含需要更新的列,而舍去其他的。<!-- 根据id查询员工信息--><select id="selectEmployeewithId" parameterType="int" resultType="cn.mybatis.d...

前面几个例子已经很好地解决了动态SQL问题。现在回到之前的if示例,这次我们将state="ACTIVE"也设置成动态的条件,看看会发生什么。<select id="selectEmployeeByIdLike" resultType="cn.mybatis.domain.Emplyee"> SELE...

有些时候,我们不想用所有的条件语句,而只想从中择其一二。针对这种情况,MyBatis提供了choose元素,它有点像Java中的switch语句。还是上面的例子,但是这次变为提供了id就按id查找,提供了loginname 和password就按loginnam 和password查找,若两者都没有提供,就返回所有sex等于男的Employee。<...

MyBatis还有一个强大特性就是它的动态SQL。在实际项目开发中,经常需要根据不同条件拼接SQL语句,拼接时还要确保不能忘了必要的空格,有时候还要注意省掉列名列表最后的逗号,等等。在使用JDBC 或其他类似持久层框架操作数据库时,处理这种情况是非常麻烦的,甚至可以用痛苦来形容,而在MyBatis中利用动态SQL这一特性可以很简单地解决这个问题。动态S...

本文修订于2019年3月17日SQL脚本在实际项目开发中,多对多关系也是非常常见的关系,比如,一个购物系统中,一个用户可以有多个订单,这是一对多的关系;一个订单中可以购买多种商品,一种商品也可以属于多个不同的订单,订单和商品就是多对多的关系。对于数据库中多对多关系建议使用一个中间表来维护关系,中间表中的订单d作为外键参照订单表的id,商品id作为外键参...

本文修订于2019年3月17日SQL脚本在实际项目开发中,一对多是非常常见的关系,比如,一个班级可以有多个学生,一个学生只能属于一个班级,班级和学生是一对多的关系,而学生和班级是多对一的关系。数据库中一对多关系通常使用主外键关联,外键列应该在多方,即多方维护关系。下面我们就用一个简单示例来看看MyBatis怎么处理一对多关系。首先,给在数据库创建两个表...

本文修订日期:2019年11月25日SQL脚本在实际项目开发中,经常存在一对一关系,比如一个人只能有一个身份证,一个身份证只能给一个人使用,这就是一对一的关系。一对一关系推荐使用唯一主外键关联,即两张表使用外键关联,由于是一对一关联,因此还需要给外键列增加unique唯一约束。下面我们就用一个简单示例来看看MyBatis怎么处理一对一关系。首先,在数据...

resultMap元素resultMap元素是MyBatis中最重要最强大的元素。它的作用是告诉MyBatis将从结果集中取出的数据转换成开发者所需要的对象。下面是最简单的映射语句示例:<select id="selectUser" resultType="map"> SELECT * FROM TB...

sql元素sql元素可以被用来定义可重用的SQL代码段,可以包含在其他语句中。它可以被静态地(在加载参数时) 参数化。不同的属性值通过包含的实例发生变化。例如:<sql id="userColumns"> ${alias}.id,${alias}.username,${alias}.password </sql&g...

insert、update 和delete元素insert,update和delete元素用来映射DML语句,是MyBatis 中最常用的元素之一。insert,update和delete元素配置和select 非常接近。例如:<insert id="insertUser" parameterType="cn.myb...

MyBatis的真正强大之处在于它的映射语句,这也是它的魔力所在。由于它的功能异常强大,映射器的XML文件就显得相对简单。如果拿它跟具有相同功能的JDBC代码进行对比,你会立即发现省掉了将近95%的代码。MyBatis 就是针对SQL 构建的,并且比普通的方法做得更好。SQL映射文件常用的元素如下:select。映射查询语句。insert。映射插入语句...

MyBatis每次创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory) 实例来完成。默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认构造方法,要么在参数映射存在的时候通过参数构造方法来实例化。如果想覆盖对象工厂的默认行为,则可以通过创建自己的对象工厂来实现。// 自定义对象工厂 public class ExampleOb...