一.resultMap使用
格式:
<resultMap id="唯一标识,用于连接,映射的POJO类," type="Student">
<id column="id" property="id"/>映射主键
<result column="查询结果的列名称" property="属性名称"></result>映射非主键
</resultMap>
二.多表关联
collection元素:
<collection property="储存数据" javaType="数据类型" ofType="如果对象嵌对象就是对象类别">
<result column="数据库传过来的数据名" property=对象中属性名"></result>
</collection>
association:元素
<association property="对象名" javaType="对象属性"
select="指定关联查询对象的id" column="关联查询时将X列的值传入select后的id">
并将查询结果放入对象中
</association>
三.常用注解标签
@Insert : 插入 sql , 和 xml insert sql 语法完全一样
@Select : 查询 sql, 和 xml select sql 语法完全一样
@Update : 更新 sql, 和 xml update sql 语法完全一样
@Delete : 删除 sql, 和 xml delete sql 语法完全一样
@Param : 入参
@Results : 设置结果集合
@Result : 结果
放在接口方法上例如:
@Insert("insert into z (x) value (#{x})")
注意用双引号,之间放入sql语句
适合简单的单表查询,过多会很麻烦,不建议用注解标签了
四.动态sql语句
官网出品:MyBatis 的一个强大的特性之一通常是它的动态 SQL 能力。 如果你有使用 JDBC 或其他 相似框架的经验,你就明白条件地串联 SQL 字符串在一起是多么 的痛苦,确保不能忘了空格或在列表的最后省略逗号。动态 SQL 可以彻底处理 这种痛苦.
如有不懂或,我的不全可以自行查询用法,官网:mybatis – MyBatis 3 | 动态 SQL
可分为:if,choose、when、otherwise,trim、where、set,foreach,script,bind
1.if
最常见情景是根据条件包含 where 子句的一部分,if 标签可以对传入的条件进行判断
2.trim.where.set
trim:
<trim prefix="WHERE/SET(可以大小写)" prefixOverrides="AND |OR (要忽略的关键字)">
...
</trim>
prefixOverrides覆盖首部内容
例如:
<trim prefixOverrides="and" prefix="where">
<if test="num!=0">
num=#{num}
</if>
<if test="name!=null">
and name=#{name}
</if>
<if test="gender!=null">
and gender=#{gender}
</if>
如果num为0,下一个不为空的接入where后第一个and被覆盖
set元素可以去掉最后一个逗号
3.foreach 元素
动态 SQL 的另一个常见使用场景是对集合进行遍历
foreach 元素的属性主要有 item,index,collection,open,separator,close。
item 表示集合中每一个元素进行迭代时的别名,index 指定一个名字,用于 表示在迭代过程中,每次迭代到的位置,open 表示该语句以什么开始, separator 表示在每次进行迭代之间以什么符号作为分隔符,close 表示以什么结束,collection是单参数时,传入什么元素,collection就是什么元素