mybatis--基础--3.3--xml映射文件--insert,update,delete元素

mybatis–基础–3.3–xml映射文件–insert,update,delete元素


代码地址

https://gitee.com/DanShenGuiZu/learnDemo/tree/mysql_mybaties_DB/mybatis-learn-master

1、insert,update,delete元素

<-------------insert--------->
<insert
  id="insertAuthor"
  parameterType="domain.blog.Author"
  flushCache="true"
  statementType="PREPARED"
  keyProperty=""
  keyColumn=""
  useGeneratedKeys=""
  timeout="20">

<-------------update--------->
<update
  id="updateAuthor"
  parameterType="domain.blog.Author"
  flushCache="true"
  statementType="PREPARED"
  timeout="20">

<-------------delete--------->
<delete
  id="deleteAuthor"
  parameterType="domain.blog.Author"
  flushCache="true"
  statementType="PREPARED"
  timeout="20">

2、属性

  1. id:
    1. sql语句的唯一标识符
  2. parameterType
    1. 参数类型,使用全类名或者别名
    2. 可选:MyBatis可以通过TypeHandler推断出具体传入语句的参数类型
    3. 默认值:unset
  3. flushCache
    1. true:任何时候只要语句被调用,都会清空本地缓存和二级缓存
    2. 默认值:false。
  4. timeout
    1. 这个设置是在抛出异常之前,驱动程序等待数据库返回请求结果的秒数。
    2. 默认值为unset(依赖驱动)。
  5. statementType
    1. STATEMENT,PREPARED或CALLABLE 的一个。这会让MyBatis分别使用 Statement,PreparedStatement或CallableStatement,
    2. 默认值:PREPARED。
  6. useGeneratedKeys
    1. 仅针对insert、update
    2. MyBatis使用JDBC的getGeneratedKeys方法来取出由数据库内部生成的主键值
    3. 默认值:false。
  7. keyProperty
    1. 仅针对insert、update
    2. 唯一标记一个属性
    3. MyBatis通过getGeneratedKeys的返回值或者通过insert语句的selectKey子元素设置它的键值
    4. 默认:unset。
    5. 可以得到多个生成的列,使用逗号分隔的属性名称列表。
  8. keyColumn
    1. 仅针对insert、update
    2. 通过生成的键值设置表中的列名
    3. 这个设置仅在某些数据库(像 PostgreSQL)是必须的,当主键列不是表中的第一列的时候需要设置。
    4. 可以得到多个生成的列,使用逗号分隔的属性名称列表。
  9. databaseId
    1. 如果配置了databaseIdProvider,MyBatis会加载所有的不带databaseId或匹配当前 databaseId的语句;
    2. 如果带或者不带的语句都有,则不带的会被忽略。

2.1、属性测试

2.1.1、代码结构

在这里插入图片描述

2.1.2、useGeneratedKeys,keyProperty

<insert id="insert" useGeneratedKeys="true"
        keyProperty="id">
  insert into user (user_name,password)
  values (#{userName},#{password})
</insert>

在这里插入图片描述
在这里插入图片描述

2.1.3、SelectKey

<insert id="insert2">
    insert into user (user_name,password)
    values (#{userName},#{password})
    <selectKey resultType="java.lang.Long" keyProperty="id" order="AFTER">
        SELECT LAST_INSERT_ID()
    </selectKey>
</insert>

在这里插入图片描述

2.1.4、SelectKey属性

<selectKey
  keyProperty="id"
  resultType="int"
  order="BEFORE"
  statementType="PREPARED">
  1. keyProperty
    1. selectKey语句结果应该被设置的目标属性。
    2. 如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。
  2. keyColumn
    1. 匹配属性的返回结果集中的列名称。
    2. 如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。
  3. resultType
    1. 返回类型
  4. order
    1. BEFORE
      1. 首先选择主键,设置keyProperty然后执行插入语句
    2. AFTER
      1. 先执行插入语句,然后设置keyProperty的值
  5. statementType
    1. STATEMENT,PREPARED或CALLABLE 的一个。这会让MyBatis分别使用 Statement,PreparedStatement或CallableStatement,
    2. 默认值:PREPARED。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
SQL映射文件是指在使用对象关系映射(ORM)框架时,为了将对象与数据库表进行映射而创建的文件。在Java开发中,常用的ORM框架有MyBatis和Hibernate,它们都支持使用SQL映射文件来定义对象与数据库表之间的映射关系。 SQL映射文件通常使用XML格式来编写,包含了一系列的SQL语句和配置信息。下面是一个简单的SQL映射文件示例: ```xml <!-- UserMapper.xml --> <mapper namespace="com.example.UserMapper"> <select id="getUserById" resultType="com.example.User"> SELECT * FROM users WHERE id = #{id} </select> <insert id="insertUser" parameterType="com.example.User"> INSERT INTO users (name, age) VALUES (#{name}, #{age}) </insert> <update id="updateUser" parameterType="com.example.User"> UPDATE users SET name = #{name}, age = #{age} WHERE id = #{id} </update> <delete id="deleteUser" parameterType="int"> DELETE FROM users WHERE id = #{id} </delete> </mapper> ``` 在上述示例中,`namespace`属性指定了映射文件对应的Mapper接口或类的全限定名。`select`、`insert`、`update`和`delete`标签分别定义了查询、插入、更新和删除操作的SQL语句,使用`id`属性指定了方法名,`parameterType`属性指定了方法参数的类型,`resultType`属性指定了查询结果的映射类型。 通过SQL映射文件,我们可以将数据库操作的SQL语句独立出来,降低了代码和SQL的耦合度,使得代码更加清晰、易于维护。ORM框架会根据映射文件中的配置信息,自动将对象与数据库表进行映射,简化了开发过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值