mybatis的一些用法

1.XXXMapper.xml中:

namespace标识mapper接口的完整路径。

resultMap标签表示手动映射数据库字段和实体类属性,resultMap中的id唯一标识该resultMap,type表示实体类的完整路径。

insert标签:id表示接口中的方法名,parameterType表示sql语句中的参数类型,对应实体类的完整路径。

foreach标签:collection表示接口方法传入的参数,如果使用了@param去重新表示参数名,那就用注解后的名字。

if标签:它中的test属性的值是判断,true就执行它的条件语句。

order by默认增序排列。

Group by的select的字段要满足出现在聚合函数中或者group by后。

在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。

HAVING 子句可以让我们筛选分组后的各组数据

参数parameterType:代表传入sql语句中的参数的类型

返回类型用resultType或resultMap表示.

resultType:自动映射。前提:实体类中的属性名要与数据库表中的字段名对应。

resultMap:手动映射-当实体类中的属性名与数据库表中的字段名不一致时使用。

<!-- type:为实体类的类名

id的值要与写的sql语句中resultMap的值一致(标识这个唯一的resultMap).

colume:数据库中表的字段名称

property:实体类中属性的名称

--> <resultMap type="Orders" id="orders"> <result column="user_id" property="userId"/> </resultMap>

2.#{参数}:参数名称可以任意取

注意以下区别:

#{}: select * from user where id = ?; 占位符时用#,此时?=='参数'

${}: select * form user where username like '%${参数}%'; 字符串拼接时用$

使用 select * from user where username like "%"#{value}"%"防止sql注入

${}中的参数名称必须是value.

#{}中的参数可以是类型可以是value,如#{item.name,jdbcType = String}

3.<!-- 添加用户 -->

<insert id="insertUser" parameterType="com.zrxjuly.mybatis.pojo.User">

<!-- 要想返回给操作层主键值,则加selectKey.

selectKey表示返回的主键,

keyProperty:主键的属性名称,

resultType:返回的类型,

order:若主键类型为Integer类型,自增长,此时order用AFTER;

若主键为char/varchar类型,order用BEFORE -->

<selectKey keyProperty="id" resultType="Integer" order="AFTER">

select LAST_INSERT_ID() </selectKey>

insert into user (username,birthday,address,sex) values (#{username},#{birthday},#{address},#{sex})

</insert>

4.Mapper接口开发需要遵循以下规范:

1)、Mapper.xml文件中的namespace与mapper接口的类路径相同。

2)、Mapper接口方法名和Mapper.xml中定义的每个statement的id相同

3)、Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同

4)、Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同

5.标签:

1).<where>标签可以去掉where语句后的第一个and。

2).提取公共sql部分,可重用

<!-- 提取出来的sql片段,公共部分, -->

<sql id="selectA">

select * from user

</sql>

<select id="selectUser" parameterType="User" resultType="User">

<include refid="selectA" /><!-- 此处引用了select * from user -->

</select>

6.foreach标签

如果接口传过来的参数为Integer[]类型的,则collection="array",此时parameterType属性去掉 如果接口传过来的参数为List<Integer>类型的,则collection="list",此时parameterType属性去掉

collection:maper接口传递过来的参数,如果接口参数列表有@param ,那么collection就是@param注解的参数名。

item:循环遍历的值

open:遍历开始

close:遍历结束

separator:分隔符

批量删除用户,当传入的参数类型为List<类名>这样的集合时,parameterType的值为类名。

mybatis的一些用法

相关推荐