当前位置:   article > 正文

Mybatis从入门到精通——selectKey标签(8)_selectkey作用

selectkey作用

一、selectKey标签作用

该标签是用来定义insert、update中主键生成的策略,在执行insert或update操作的之前或之后生成自定义主键。

 

二、selectKey标签属性

序号属性名说明
1
resultType
该查询返回主键的类型(一般是Integer或String)
2
keyProperty
接收返回主键的属性名
3
order
在update、insert操作之后或之后,取值为BEFORE、AFTER
4
databaseId
数据库标识,用于同一个操作但不同数据库执行不同sql。

 

三、案例

插入一条新数据,并且该数据的ID使用随机获取。

映射文件:

  1. <insert id="insert" parameterType="com.my.entity.Person" keyProperty="id" useGeneratedKeys="true">
  2. <!-- 随机产生ID -->
  3. <selectKey keyProperty="id" order="BEFORE" resultType="int">
  4. select round(RAND()*1000000)
  5. </selectKey>
  6. insert into person(id,name,sex,telephone,address,age) values(#{id},#{name},#{sex},#{telephone},#{address},#{age})
  7. </insert>

说明:selectKey标签需要写在insert、update的标签内,通过一个查询,把返回结果作为主键。

测试类:

  1. public class MybatisTest {
  2. private SqlSessionFactory sqlSessionFactory;
  3. @Before
  4. public void init() throws IOException {
  5. String resource = "mybatis-config.xml";
  6. //1.使用mybatis的工具读取配置文件
  7. InputStream inputStream = Resources.getResourceAsStream(resource);
  8. SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
  9. //2.创建sqlSessionFactory
  10. sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
  11. inputStream.close();
  12. }
  13. /**
  14. * 测试selectKey
  15. */
  16. @Test
  17. public void testSelectKey() {
  18. //3.获取sqlSession
  19. SqlSession sqlSession = sqlSessionFactory.openSession();
  20. //4.获取mapper接口实现类
  21. PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class);
  22. //5.调用方法
  23. Person person = new Person();
  24. person.setName("xuye");
  25. person.setAge(20);
  26. person.setTelephone("123465789");
  27. person.setSex("女");
  28. person.setAddress("美国");
  29. personMapper.insert(person);
  30. System.out.println(person.getId());
  31. //提交事务
  32. sqlSession.commit();
  33. //6.释放资源
  34. sqlSession.close();
  35. }
  36. }

说明:最后输出结果主键是一个随机数。

 

 

三、补充说明

selectKey通过编写SQL然后把返回的结果作为主键,如Mybatis会自动产生主键,所以用自增主键的话则不需要设置,如果其它的数据库需要自定义主键,则可以通过该标签进行设置。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/241441
推荐阅读
相关标签
  

闽ICP备14008679号