赞
踩
该标签是用来定义insert、update中主键生成的策略,在执行insert或update操作的之前或之后生成自定义主键。
序号 | 属性名 | 说明 |
1 | | 该查询返回主键的类型(一般是Integer或String) |
2 | | 接收返回主键的属性名 |
3 | | 在update、insert操作之后或之后,取值为BEFORE、AFTER |
4 | | |
插入一条新数据,并且该数据的ID使用随机获取。
映射文件:
- <insert id="insert" parameterType="com.my.entity.Person" keyProperty="id" useGeneratedKeys="true">
- <!-- 随机产生ID -->
- <selectKey keyProperty="id" order="BEFORE" resultType="int">
- select round(RAND()*1000000)
- </selectKey>
-
- insert into person(id,name,sex,telephone,address,age) values(#{id},#{name},#{sex},#{telephone},#{address},#{age})
- </insert>
说明:selectKey标签需要写在insert、update的标签内,通过一个查询,把返回结果作为主键。
测试类:
- public class MybatisTest {
-
- private SqlSessionFactory sqlSessionFactory;
-
- @Before
- public void init() throws IOException {
- String resource = "mybatis-config.xml";
- //1.使用mybatis的工具读取配置文件
- InputStream inputStream = Resources.getResourceAsStream(resource);
- SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
- //2.创建sqlSessionFactory
- sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
- inputStream.close();
- }
-
-
- /**
- * 测试selectKey
- */
- @Test
- public void testSelectKey() {
- //3.获取sqlSession
- SqlSession sqlSession = sqlSessionFactory.openSession();
- //4.获取mapper接口实现类
- PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class);
- //5.调用方法
- Person person = new Person();
- person.setName("xuye");
- person.setAge(20);
- person.setTelephone("123465789");
- person.setSex("女");
- person.setAddress("美国");
- personMapper.insert(person);
- System.out.println(person.getId());
- //提交事务
- sqlSession.commit();
- //6.释放资源
- sqlSession.close();
- }
-
- }
说明:最后输出结果主键是一个随机数。
selectKey通过编写SQL然后把返回的结果作为主键,如Mybatis会自动产生主键,所以用自增主键的话则不需要设置,如果其它的数据库需要自定义主键,则可以通过该标签进行设置。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。