MyBatis 添加数据时返回数据库主键
首先,如果数据库支持自动生成主键的字段(比如MySql、SQL Server)那么可以设置useGeneratedKeys="true",然后再把keyProperty="userId"设置到目标属性上就可以了。
<insert id="addUser" parameterType="user" useGeneratedKeys="true" keyProperty="userId">
insert into t_user (userName,passWord)
values(#{userName},#{passWord})
</insert>
创建数据表t_user
创建User
package com.po;
public class User {
private Integer userId;
private String userName;
private String passWord;
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
}
创建UserMapper.xml
<?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="com.mapper.UserMapper">
<insert id="addUser" parameterType="user" useGeneratedKeys="true" keyProperty="userId">
insert into t_user (userName,passWord)
values(#{userName},#{passWord})
</insert>
</mapper>
创建UserDao
package com.dao;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import com.factory.SessionFactory;
import com.po.User;
public class UserDao {
private SqlSession session=SessionFactory.getSqlSession();
@Test
public void addUser() {
User user=new User();
user.setUserName("baixue");
user.setPassWord("12352");
int row=session.insert("com.mapper.UserMapper.addUser", user);
session.commit();
System.out.println("添加了"+row+"条数据,userId值为:"+user.getUserId());
}
}
配置mybatis-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 设置别名 -->
<typeAliases>
<typeAlias alias="user" type="com.po.User"/>
</typeAliases>
<!-- 默认的环境id为mysql -->
<environments default="mysql">
<environment id="mysql">
<!-- 指定事务管理类型 -->
<transactionManager type="jdbc"/>
<!-- 配置数据库连接 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!-- 配置Mapper的位置 -->
<mappers>
<mapper resource="com/mapper/ClassesMapper.xml"/>
<mapper resource="com/mapper/UserMapper.xml"/>
</mappers>
</configuration>
执行UserDao的addUser()方法