软件编程
位置:首页>> 软件编程>> java编程>> 对Mapper 中几种update的区别说明

对Mapper 中几种update的区别说明

作者:万年精魄  发布时间:2023-05-19 04:39:44 

标签:Mapper,update区别

这两个update都是使用generator生成的mapper.xml文件中,对dao层的更新操作

update

更新传回数据的所有字段,没有传回的字段保持原样。

updateByPrimaryKey

对实体类的字段全部更新(不判断是否为Null),即如果字段为空就更新为空;

updateByPrimaryKeySelective

会对实体类字段进行判断再更新(如果为Null就忽略更新),如果字段为空,忽略不更新;

补充知识:mapper中insert、update、delete、select、resultMap的用法

这里介绍mapper映射文件的配置, 这是mybatis的核心之一,一定要学好。

在mapper文件中,以mapper作为根节点,其下面可以配置的元素节点有: select, insert, update, delete, cache, cache-ref, resultMap, sql 。

先来看看 insert, update, delete 怎么配置, 能配置哪些元素吧:


<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE mapper  
  PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
  "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">

<!-- mapper 为根元素节点, 一个namespace对应一个dao -->
<mapper namespace="com.dy.dao.UserDao">
 <insert
  <!-- 1. id (必须配置)
   id是命名空间中的唯一标识符,可被用来代表这条语句。 一个命名空间(namespace) 对应一个dao接口,
   这个id也应该对应dao里面的某个方法(相当于方法的实现),因此id 应该与方法名一致 -->

id="insertUser"

<!-- 2. parameterType (可选配置, 默认为mybatis自动选择处理)
   将要传入语句的参数完全限定类名或别名,如果不配置,mybatis会通过ParameterHandler 根据参数类型默认选择合适的typeHandler进行处理
   parameterType 主要指定参数类型,可以是int, short, long, string等类型,也可以是复杂类型(如对象) -->

parameterType="com.demo.User"

<!-- 3. flushCache (可选配置,默认配置为true)
   将其设置为 true,任何时候只要语句被调用,都会导致本地缓存和二级缓存都会被清空,
   默认值:true(对应插入、更新和删除语句) -->

flushCache="true"

<!-- 4. statementType (可选配置,默认配置为PREPARED)
   STATEMENT,PREPARED 或 CALLABLE 的一个。这会让 MyBatis 分别使用 Statement,PreparedStatement 或 CallableStatement,默认值:PREPARED。 -->

statementType="PREPARED"

<!-- 5. keyProperty (可选配置, 默认为unset)
   (仅对 insert 和 update 有用)唯一标记一个属性,MyBatis 会通过 getGeneratedKeys 的返回值或者通过 insert 语句的 selectKey 子元素设置它的键值,默认:unset。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。 -->

keyProperty=""

<!-- 6. keyColumn   (可选配置)
   (仅对 insert 和 update 有用)通过生成的键值设置表中的列名,这个设置仅在某些数据库(像 PostgreSQL)是必须的,当主键列不是表中的第一列的时候需要设置。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。 -->

keyColumn=""

<!-- 7. useGeneratedKeys (可选配置, 默认为false)
   (仅对 insert 和 update 有用)这会令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法来取出由数据库内部生成的主键(比如:像 MySQL 和 SQL Server 这样的关系数据库管理系统的自动递增字段),默认值:false。 -->

useGeneratedKeys="false"

<!-- 8. timeout (可选配置, 默认为unset, 依赖驱动)
   这个设置是在抛出异常之前,驱动程序等待数据库返回请求结果的秒数。默认值为 unset(依赖驱动)。 -->

timeout="20">

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

<delete
  id="deleteUser"
  parameterType="com.demo.User"
  flushCache="true"
  statementType="PREPARED"
  timeout="20">
</mapper>

来源:https://blog.csdn.net/qq_34638435/article/details/80826421

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com