2021-05-03 10:59  阅读(156)
文章分类:MyBatis 教程 文章标签:MyBatisMyBatis 教程
©  原文作者:一点教程 原文地址:http://www.yiidian.com/springmvc/

在持久层开发中,我们有时需要在Dao方法执行完毕后,获取数据库自动生成的主键值。MyBatis提供两种方式帮助我们获取自增长主键值。

1 selectKey标签

1.1 Dao添加save1方法

    
    /**
     * 添加
     */
    public void save1(Customer customer);

1.2 配置save1方法

    
    <!--1.方式一:通过selectkey标签获取自增主键值-->
    <insert id="save1" parameterType="com.yiidian.domain.Customer">
        <selectKey keyProperty="id" keyColumn="id" resultType="int" order="AFTER">
            SELECT LAST_INSERT_ID()
        </selectKey>
        INSERT INTO t_customer(NAME,gender,telephone) VALUES(#{name},#{gender},#{telephone})
    </insert>

selectKey: 获取数据库产生的主键值
order: 查询主键值的SQL在insert之前或之后
BEFORE:在insert之前
AFTER:之insert后
keyColumn:主键字段名称
keyProperty: 把获取到的主键值赋给对象的哪个属性
resultType: 主键的类型

1.3 编写Junit测试代码

    
    /**
     * 添加-通过selectkey标签获取自增主键值
     */
    @Test
    public void testSave1(){
        //1.获取SqlSession对象
        SqlSession session = MyBatisUtils.getSession();
    
        //2.生成Dao代理对象
        CustomerDao customerDao = session.getMapper(CustomerDao.class);
    
        //3.调用save方法
        Customer customer = new Customer();
        customer.setName("小苍");
        customer.setGender("女");
        customer.setTelephone("15755556666");
    
        System.out.println("插入数据前:"+customer);
        
        customerDao.save1(customer);
    
        System.out.println("插入数据后:"+customer);
        
        //4.关闭连接
        session.close();
    }

1.4 运行测试

202105031059397831.png

2 useGeneratedKeys属性

2.1 Dao添加save2方法

    
    /**
     * 添加
     */
    public void save2(Customer customer);

2.2 配置save2方法

    
    <!--2.方式二:通过useGeneratedKeys属性获取自增主键值-->
    <insert id="save1" parameterType="com.yiidian.domain.Customer" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
        INSERT INTO t_customer(NAME,gender,telephone) VALUES(#{name},#{gender},#{telephone})
    </insert>

2.3 编写Junit测试方法

    
    /**
     * 添加-通过useGeneratedKeys属性获取自增主键值
     */
    @Test
    public void testSave2(){
        //1.获取SqlSession对象
        SqlSession session = MyBatisUtils.getSession();
    
        //2.生成Dao代理对象
        CustomerDao customerDao = session.getMapper(CustomerDao.class);
    
        //3.调用save方法
        Customer customer = new Customer();
        customer.setName("小泽");
        customer.setGender("女");
        customer.setTelephone("13422223333");
    
        System.out.println("插入数据前:"+customer);
    
        customerDao.save2(customer);
    
        System.out.println("插入数据后:"+customer);
    
        //4.关闭连接
        session.close();
    }

2.4 运行测试

202105031059403232.png

源码下载:https://pan.baidu.com/s/17K6F2nCfgieTkQ_I0stfVQ

点赞(0)
版权归原创作者所有,任何形式转载请联系作者; Java 技术驿站 >> MyBatis 获取自增主键值
上一篇
MyBatis 开发CRUD
下一篇
MyBatis 核心API介绍