加载中...
加载中...
MyBatis的常见属性总结select、insert、update、delete

MyBatis的常见属性总结select、insert、update、delete 转载


图片来源于网络

一、前言

在使用 MyBatis 时,最长打交道的就是 XML映射文件 ,
使用 MyBatis 的 select、insert、update、delete 实现数据库的增删改查。

但是用的时间多了,发现相同的查询,却又很多中使用方法,属性的配置也是有多种方式,每次都会去抉择该使用哪一种比较好?无奈耽误了开发时间。

这里主要总结的就是一套最常用,也是本人觉的最合理的MyBatis用法,记住这里的,就可以应付日常所需了,从此告别选择恐惧症。

二、常见的属性规律

记住其中的常见属性就可以,例如,select 元素有很多属性:

复制收展XML<select
id="selectUser" //与 UserMapper.java 接口对应的方法
parameterType="int" //传入的参数格式
resultType="hashmap" //返回的数据类型,当返回多个参数的时候,建议使用 resultMap
resultMap="userResultMap" //返回的数据类型,相当于对 resultType="hashmap" 的封装。resultTyperesultMap两者只能存在一个
parameterMap="deprecated" //已经废弃,现在使用内联参数映射和 parameterType 属性。
flushCache="false" //是否清空缓存,默认为false
useCache="true" //是否二级缓存,默认值:对 select 元素为 true
timeout="10000" //等待数据库返回请求结果的秒数
fetchSize="256"
statementType="PREPARED" // STATEMENTPREPAREDCALLABLE 的一个。这会让 MyBatis 分别使用 StatementPreparedStatementCallableStatement,默认值:PREPARED
...>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

但是我们一般只需要配置其中几个就可以了,其它的很少使用:

复制XML<select
id="selectUser"
resultType="hashmap" //返回的数据类型,当返回多个参数的时候,建议使用 resultMap
resultMap="userResultMap" //返回的数据类型,相当于对 resultType="hashmap" 的封装。resultTyperesultMap两者只能存在一个
>
  • 1
  • 2
  • 3
  • 4
  • 5

是不是清爽多了。

三、常用属性(记住这里就可以啦)

复制XML<typeAlias type="com.test.model.User" alias="User"/> //类型别名,之后就不用写包名了


// resultMap 可以封装很多个属性,在返回数据多的情况下,可以避免使用 resultType="hashmap" 返回不易识别的Map对象,而可以直接返回封装的对象,如 User
<resultMap id="userResultMap" type="User">
<id property="id" column="user_id" />
<result property="username" column="user_name"/>
<result property="password" column="hashed_password"/>
</resultMap>


//sql语句的封装,之后可以使用 <include refid="Base_Column_List" /> 来插入相关 sql 语句
<sql id="Base_Column_List" >
id, phone, email, nickname, password, avatar, create_time, last_login_time, status
</sql>


<select
id="selectUser"
resultType="hashmap" //返回的数据类型。当返回多个参数的时候,建议使用 resultMap
resultMap="userResultMap" //返回的数据类型。相当于对 resultType="hashmap" 的封装。resultTyperesultMap两者只能存在一个
>

<insert
id="insertUser"
parameterType="com.test.model.User"

useGeneratedKeys="true" //(仅对 insertupdate 有用)这会令 MyBatis 使用 JDBCgetGeneratedKeys 方法来取出由数据库内部生成的主键(比如:像 MySQLSQL Server 这样的关系数据库管理系统的自动递增字段),默认值:false
keyProperty="id" //(仅对 insertupdate 有用)唯一标记一个属性,MyBatis 会通过 getGeneratedKeys 的返回值或者通过 insert 语句的 selectKey 子元素设置它的键值,默认:unset。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。
>

<update
id="updateUser">

<delete
id="deleteUser">
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36


MyBatis 中 useGeneratedKeys 和 keyProperty 含义:

复制Java/*如果没有useGeneratedKeys="true"和keyProperty="id",下面 insert 之后的 user.getId() 是无法获取 id 值的*/
public void insert(User user) {
int count = userMapper.insert(user);
System.out.println("共插入" + count + "条记录!" + "\n刚刚插入记录的主键自增长值为:" + user.getId());
}
  • 1
  • 2
  • 3
  • 4
  • 5

四、属性大全

复制XML<select
id="selectUser" //与 PersonMapper.java 接口对应的方法
parameterType="int" //传入的参数格式
resultType="hashmap" //返回的数据类型,当返回多个参数的时候,建议使用 resultMap
resultMap="userResultMap" //返回的数据类型,相当于对 resultType="hashmap" 的封装。resultTyperesultMap两者只能存在一个
parameterMap="deprecated" //已经废弃,现在使用 resultTyperesultType
flushCache="false" //是否清空缓存,默认为false
useCache="true" //是否二级缓存,默认值:对 select 元素为 true
timeout="10000" //等待数据库返回请求结果的秒数
fetchSize="256"
statementType="PREPARED" // STATEMENTPREPAREDCALLABLE 的一个。这会让 MyBatis 分别使用 StatementPreparedStatementCallableStatement,默认值:PREPARED
...>

<insert
id="insertUser"
parameterType="com.test.model.User"
flushCache="true"
statementType="PREPARED"
timeout="20"
keyProperty="" //(仅对 insertupdate 有用)唯一标记一个属性,MyBatis 会通过 getGeneratedKeys 的返回值或者通过 insert 语句的 selectKey 子元素设置它的键值,默认:unset。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。
useGeneratedKeys="" //(仅对 insertupdate 有用)这会令 MyBatis 使用 JDBCgetGeneratedKeys 方法来取出由数据库内部生成的主键(比如:像 MySQLSQL Server 这样的关系数据库管理系统的自动递增字段),默认值:false
keyColumn="" //(仅对 insertupdate 有用)通过生成的键值设置表中的列名,这个设置仅在某些数据库(像 PostgreSQL)是必须的,当主键列不是表中的第一列的时候需要设置。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。
>

<update
id="updateUser"
parameterType="com.test.model.User"
flushCache="true"
statementType="PREPARED"
timeout="20">

<delete
id="deleteUser"
parameterType="com.test.model.User"
flushCache="true"
statementType="PREPARED"
timeout="20">
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37


原文:https://www.ucloud.cn/yun/32202.html

一、Mybatis批量删除重点foreachforeach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。foreach元素的属性主要有:item,表示集合中每一个元素进行迭代时的别名index,指
没有更多推荐了 [去首页]
image
文章
357
原创
284
转载
73
翻译
0
访问量
199063
喜欢
47
粉丝
6
码龄
5年
资源
0

文章目录

加载中...
0
0