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

栏目: Java · 发布时间: 6年前

内容简介:MyBatis的常见属性总结select、insert、update、delete

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

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

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

二、常见的属性规律

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

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

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

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

是不是清爽多了。

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

<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" 的封装。resultType、resultMap两者只能存在一个
  >
  
<insert
  id="insertUser"
  parameterType="com.test.model.User"

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

<update
  id="updateUser">

<delete
  id="deleteUser">

MyBatis 中 useGeneratedKeys 和 keyProperty 含义:

// 如果没有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()); 
}

四、属性大全

<select
  id="selectUser" //与 PersonMapper.java 接口对应的方法
  parameterType="int" //传入的参数格式
  resultType="hashmap" //返回的数据类型,当返回多个参数的时候,建议使用 resultMap
  resultMap="userResultMap" //返回的数据类型,相当于对 resultType="hashmap" 的封装。resultType、resultMap两者只能存在一个
  parameterMap="deprecated" //已经废弃,现在使用 resultType 和 resultType
  flushCache="false" //是否清空缓存,默认为false
  useCache="true" //是否二级缓存,默认值:对 select 元素为 true。
  timeout="10000" //等待数据库返回请求结果的秒数
  fetchSize="256" 
  statementType="PREPARED" // STATEMENT,PREPARED 或 CALLABLE 的一个。这会让 MyBatis 分别使用 Statement,PreparedStatement 或 CallableStatement,默认值:PREPARED。
  ...>
  
<insert
  id="insertUser"
  parameterType="com.test.model.User"
  flushCache="true"
  statementType="PREPARED"
  timeout="20"
  keyProperty=""      //(仅对 insert 和 update 有用)唯一标记一个属性,MyBatis 会通过 getGeneratedKeys 的返回值或者通过 insert 语句的 selectKey 子元素设置它的键值,默认:unset。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。
  useGeneratedKeys="" //(仅对 insert 和 update 有用)这会令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法来取出由数据库内部生成的主键(比如:像 MySQL 和 SQL Server 这样的关系数据库管理系统的自动递增字段),默认值:false。
  keyColumn="" //(仅对 insert 和 update 有用)通过生成的键值设置表中的列名,这个设置仅在某些数据库(像 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">

五、MyBatis教程推荐

想详细的学习MyBatis,推荐大家看这个教程:http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html#Parameters


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

理解专业程序员

理解专业程序员

(美)杰拉尔德·温伯格(GeraldM.Weinberg) / 刘天北 / 清华大学出版社 / 2006-7 / 25.00元

《理解专业程序员》通过行内专家的独特视角,介绍了如何成为优秀程序员,如何提高工作绩效等问题。全书由多篇讨论程序员职业的短文组成,内容精彩绝伦,是一部任何在这个变化急剧的领域工作的人都不可错过的重要作品。本书论述生动翔实——你肯定能从中认出你自己和你的公司的故事——因此不仅极富教益,而且读来也引人入胜。 各篇主题包括:对于专业程序员重要的若干问题,成为专业程序员的途径,在企业官僚体......一起来看看 《理解专业程序员》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

SHA 加密
SHA 加密

SHA 加密工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换