MyBatis 获取自增主键值
在持久层开发中,我们有时需要在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 运行测试
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 运行测试
热门文章
优秀文章