mybatis初步---- insert语句

1、insert使用db自动生成主键

<insert id="insertAuthor" parameterType="domain.blog.Author" useGeneratedKeys="true"
    keyProperty="id">
  insert into Author (username,password,email,bio)
  values (#{username},#{password},#{email},#{bio})
</insert>
2、db不支持自动生成时

<insert id="insertAuthor" parameterType="domain.blog.Author">
  <selectKey keyProperty="id" resultType="int" order="BEFORE">
    select CAST(RANDOM()*1000000 as INTEGER) a from SYSIBM.SYSDUMMY1
  </selectKey>
  insert into Author
    (id, username, password, email,bio, favourite_section)
  values
    (#{id}, #{username}, #{password}, #{email}, #{bio}, #{favouriteSection,jdbcType=VARCHAR})
</insert>
在上面的示例中,selectKey 元素将会首先运行,Author 的 id 会被设置,然后插入语句 会被调用。 这给你了一个简单的行为在你的数据库中来处理自动生成的主键, 而不需要使你 的 Java 代码变得复杂。

order 这可以被设置为 BEFORE 或 AFTER。如果设置为 BEFORE,那 么它会首先选择主键, 设置 keyProperty 然后执行插入语句。 如果 设置为 AFTER,那么先执行插入语句,然后是 selectKey 元素- 这和如 Oracle 数据库相似,可以在插入语句中嵌入序列调用
时间: 2024-10-29 10:46:55

mybatis初步---- insert语句的相关文章

Mybatis执行insert语句,获取主键

一般的insert操作返回的是受影响行数,如果要获得新增加的那一行的主键,有两种方式可以实现. 方法1(推荐): <insert id="addAuthor" parameterType="domain.Author" useGeneratedKeys="true" keyProperty="id"> insert into author(username,password,email,bio) values(#{

mybatis 实现 insert 语句返回 主键

mybatis 中 insertSelective(example) 语句默认返回并不是 插入记录的主键. 我们可以考虑插入记录主键不直接作为 函数的返回值, 而是体现在改变函数参数 "example", 使其主键等于插入记录的主键. 在insertSelective xml定义中,加入以下代码: <selectKey resultType="Integer" keyProperty="id" >   SELECT last_inse

mybatis之insert语句报错Cause: java.sql.SQLException: sql injection violation, syntax error: ERROR. token : WHERE,

报错日志:org.springframework.jdbc.UncategorizedSQLException: Error updating database. Cause: java.sql.SQLException: sql injection violation, syntax error: ERROR. token : WHERE, pos : 315 : UPDATE jxdx_leave 报错原因:多了一个逗号: 关键看token后面,这里通过token可以直接定位报错地点: 原文

Mybatis Generator insert useGeneratedKeys keyProperty

Mybatis自动生成代码,需要用到mybatis Generator,详见http://mybatis.github.io/generator/configreference/generatedKey.html insert语句如果要返回自动生成的key值,一般会在insert里加入useGeneratedKeys属性,例如 <insert id="insert" parameterType="cn.ac.iscas.pebble.ufe.bean.Subtask&q

Mybatis学习--Sql语句构建器

学习笔记,选自Mybatis官方中文文档:http://www.mybatis.org/mybatis-3/zh/statement-builders.html 问题 Java程序员面对的最痛苦的事情之一就是在Java代码中嵌入SQL语句.这么来做通常是由于SQL语句需要动态来生成-否则可以将它们放到外部文件或者存储过程中.正如你已经看到的那样,MyBatis在它的XML映射特性中有一个强大的动态SQL生成方案.但有时在Java代码内部创建SQL语句也是必要的.此时,MyBatis有另外一个特性

在mybatis执行SQL语句之前进行拦击处理

比较适用于在分页时候进行拦截.对分页的SQL语句通过封装处理,处理成不同的分页sql. 实用性比较强. import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import java.util.Properties; import org.apache.ibatis.e

java mybatis学习之$和#区别,mapper代理接口,动态SQL,在日志中输出mybatis的sql语句

1.在mybatis中,$和#的区别: #{}:表示一个预处理参数,参数类型不定,是根据传入的参数类型来设定的.类似于JDBC中的? 特例使用,模糊查询:(针对oracle): and username like concat(concat('%',#{username}),'%') ${}:相当于是我们的JDBC里的字符串拼接.这里就相当于传入的就是一个字符串(不管传入什么样的数据类型,都是字符串) and username like '%${value}%' 2.$和#在mybatis中的优

MyBatis :Insert (返回主键、批量插入)

一.前言    数据库操作怎能少了INSERT操作呢?下面记录MyBatis关于INSERT操作的笔记,以便日后查阅. 二.insert元素 属性详解   其属性如下: parameterType ,入参的全限定类名或类型别名 keyColumn ,设置数据表自动生成的主键名.对特定数据库(如PostgreSQL),若自动生成的主键不是第一个字段则必须设置 keyProperty ,默认值unset,用于设置getGeneratedKeys方法或selectKey子元素返回值将赋值到领域模型的哪

映射语句之INSERT语句

1.一个 INSERT SQL 语句可以在<insert>元素在映射器 XML 配置文件中配置 例子: <insert id="insertStudentWithId" parameterType="Student">         INSERT INTO Student(id,name,sex,birthday,height,weight,score,address,email,hobby) values         (#{id},#