MyBatis第三次补充

一.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就是什么元素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值