黑马程序员技术交流社区

标题: [学习交流] 【广州校区】+【原创】mybatis 主键返回 [打印本页]

作者: yqw_gz_java    时间: 2018-4-6 12:47
标题: [学习交流] 【广州校区】+【原创】mybatis 主键返回
本帖最后由 yqw_gz_java 于 2018-4-6 12:53 编辑

# 1数据库为mysql时
使用  select LAST_INSERT_ID() 函数
```
  <selectKey  keyProperty="id" resultType="int" order="AFTER">
       select LAST_INSERT_ID()
   </selectKey>
```
orcal
```
        <!-- oracle
        在执行insert之前执行select 序列.nextval() from dual取出序列最大值,将值设置到user对象 的id属性
         -->
<selectKey keyProperty="id" order="BEFORE" resultType="int">
        select 序列.nextval() from dual
</selectKey>

        
```
uuid生成主键
```
<selectKey keyProperty="id" order="BEFORE" resultType="string">
        select uuid()
</selectKey>
```
# 2 mapper dao 的编写  
首先  //命名规则  是表名加mapper   
```
UserMapper.xml  
```
然后 命名空间   namespace="dao.mapper.UserMapper" 是接口的全限定名

```
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="dao.mapper.UserMapper">
```
再是方法名就是(findUserById)  id="findUserById"  statmentid

```
select id="findUserById" parameterType="int" resultType="kotlinsrc.User">
        SELECT *FROM USER WHERE id=#{id}
    </select>
```

测试  

```
  var build: SqlSessionFactory? = null
    var sqlSession: SqlSession?=null
    @Before
    fun init(): Unit {
        val resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml")
        build = SqlSessionFactoryBuilder().build(resourceAsStream)
        sqlSession = build?.openSession()
        println("init")
    }
    @Test
    fun testMapper() {
        val mapper = sqlSession?.getMapper(UserMapper::class.java)
        val findUserById = mapper?.findUserById(1)
        sqlSession?.close()
        println(findUserById)

    }
```







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2