Day10——支持主键自增的数据库获取主键值
程序员文章站
2022-06-02 17:04:41
...
一. 问题需求
插入一条新的数据,立马查询这条数据。
分析: 插入新数据很简单,查询数据需要知道这条数据的主键值,因此我们需要在插入新数据后立马获取到并且返回它的主键值
前往免费下载源码
二. 例子
MyBatis中可以使用useGeneratedKeys=“true”,然后把keyProperty设置到目标属性上,如下:
EmployeeMapper.xml
<!-- public void insertEmployee(Employee employee);
parameterType:可以省略不配。MyBatis可以通过具体的参数推断类型
useGeneratedKeys:当前使用的是主键自增
keyProperty:指定使用对象 的哪个属性来保存返回的主键值
-->
<insert id="insertEmployee" parameterType="com.atguigu.mybatis.beans.Employee"
useGeneratedKeys="true" keyProperty="id">
insert into tbl_employee (last_name, email, gender) values (#{lastName}, #{email}, #{gender})
</insert>
TestMyBatis.java
@Test
public void testReturnKeys() throws Exception{
SqlSessionFactory ssf = getSqlSessionFactory();
SqlSession session = ssf.openSession();
//ssf.openSession(true);带自动提交功能
try {
EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
Employee employee = new Employee(null, "柴柴", "[email protected]", "0");
mapper.insertEmployee(employee);
Integer id = employee.getId();
System.out.println("主键值:" + id);
session.commit();
/**
* 底层源码实现主键自增并且返回主键
*/
//
// Connection conn = null;
// PreparedStatement ps =
// conn.prepareStatement("sql语句", PreparedStatement.RETURN_GENERATED_KEYS);
// ps.executeUpdate();
// ps.getGeneratedKeys();
} finally {
// TODO: handle finally clause
session.close();
}
}
public SqlSessionFactory getSqlSessionFactory() throws Exception {
String resource = "mybatis-config.xml";
InputStream inputStream =
Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(inputStream);
return sqlSessionFactory;
}
上一篇: 曹刿是什么人?他真的是个大骗子吗
下一篇: 过多if-else重构