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>


    增加了 useGeneratedKeys=”true” ,这一设置指定了 “id” 属性将会由数据库来自动生成,keyProperty ="id" 指定 Product 类中的 id 属性,keyColumn="id" 则指定了Product 表中的列名 id




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
原创粉丝点击