本帖最后由 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)
}
```
|
|