JavaEE_Mybatis 获取插入后自增主键的值
来源:互联网 发布:vue.js html模板 编辑:程序博客网 时间:2024/06/05 11:52
在使用SSM 框架编写业务代码的时候,我们有时候有这样的需求,需要获取到新增数据项的自增id .
这时候可以通过以下的方式进行获取:
方式一:
<insert id="insert" parameterType="com._180.test.bean.UserTesta"> insert into user_testa (name) values (#{name,jdbcType=VARCHAR}) <selectKey keyProperty="id" resultType="int" order="AFTER"> SELECT LAST_INSERT_ID(); </selectKey> </insert>
使用<selectKey> 标签,就会在数据库自动生成 id 之后,将id 的值返回给 Java 程序中的对象,那么product 实例中的id 值就会被正确设置。
SELECT LAST_INSERT_ID() 这一语法,根据使用数据库类型的不同,有可能不同,本例中的语句仅适用与MySQL
方式二:
<insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com._180.test.bean.UserTesta" useGeneratedKeys="true"> insert into user_testa <trim prefix="(" suffix=")" suffixOverrides=","> <if test="name != null"> name, </if> </trim> <trim prefix="values (" suffix=")" suffixOverrides=","> <if test="name != null"> #{name,jdbcType=VARCHAR}, </if> </trim> </insert>
JavaBean
package com._180.test.bean;public class UserTesta { private Integer id; private String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name == null ? null : name.trim(); }}
接口定义:
package com._180.test.mapper;import com._180.test.bean.UserTesta;public interface UserTestaMapper { int deleteByPrimaryKey(Integer id); int insert(UserTesta record); int insertSelective(UserTesta record); UserTesta selectByPrimaryKey(Integer id); int updateByPrimaryKeySelective(UserTesta record); int updateByPrimaryKey(UserTesta record);}
测试类:
package com._180.test;import com._180.test.bean.UserTesta;import com._180.test.mapper.UserTestaMapper;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import org.junit.Before;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import java.io.InputStream;/** * Created by szh on 2017/11/20. */public class UserTestaMapperTest { private ApplicationContext applicationContext; private SqlSessionFactory sqlSessionFactory; @Before public void setup() throws Exception { String resource = "mybatis/mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-dao.xml"); } @Test public void testInsert() throws Exception { SqlSession sqlSession = sqlSessionFactory.openSession(); UserTestaMapper userTestaMapper = sqlSession.getMapper(UserTestaMapper.class); UserTesta usera = new UserTesta(); usera.setName("hellok"); userTestaMapper.insert(usera); sqlSession.commit(); System.out.println("id : " + usera.getId()); } @Test public void testInsertSelective() throws Exception { SqlSession sqlSession = sqlSessionFactory.openSession(); UserTestaMapper userTestaMapper = sqlSession.getMapper(UserTestaMapper.class); UserTesta usera = new UserTesta(); usera.setName("hello"); userTestaMapper.insertSelective(usera); sqlSession.commit(); System.out.println("id : " + usera.getId()); }}
阅读全文
0 0
- JavaEE_Mybatis 获取插入后自增主键的值
- SQLSERVER 插入数据后获取插入数据的主键或自增主键
- 获取刚刚 插入的自增主键
- 使用JDBC获取插入记录的自增主键值
- VC++获取SQLSERVER 2008插入记录后的自增主键ID
- 【亲测】mybatis使用注解方式插入数据后获取自增长的主键值
- MyBatis使用注解方式插入数据后获取自增长的主键值
- mybatis使用注解方式插入数据后获取自增长的主键值
- Mybatis+MySql 插入数据后返回自增主键值
- sql插入后获得自增主键
- MyBatis:获取插入记录的自增主键
- MyBatis获取插入记录的自增主键
- mybatis获取mysql插入的自增主键配置方法
- MySql获取插入记录自增主键ID值
- JDBC ORACLE: 取得SQL总列数; 插入数据后 取得指定自增字段(主键)的值
- Mybatis+MySQL insert 后取出插入数据的自增主键值
- mybatis 插入操作,insert_获取非自增主键的值
- 【JAVA - SSM】之MyBatis插入数据后获取自增主键
- JSP的概述;JSP的运行原理 JSP的简单使用
- 剑指offer-从头到尾打印链表
- ThinkPHP3.2.3Model类的全部函数
- 在eclipse下ClassPathXmlApplicationContext读取xml文件读取不到问题
- 普及X64 ssdtshadow inline HOOK
- JavaEE_Mybatis 获取插入后自增主键的值
- 慎用 JS 中的 for (var index in items) 循环数组项
- Kotlin Eclipse 环境搭建
- shell中if做比较
- tf.estimator Quickstart
- 循环链表的创建与输出
- mysql 数据库varchar(100)可以存储多少个汉字,多少个数字
- 什么是JSP的脚本元素
- jsp开发中的路径问题;JSP的开发模式之MVC模式