当我们向数据库插入数据时,主键是设置的自增的,但是我们插入好数据库后,我们希望得到刚刚插入的数据的主键,mybatis可以实现这样的功能 应用场景: 员工与部门,当新员工进公司,该员工肯定属于某个部门,插入数据的时候,要告诉部门表,这个员工属于哪个部门
mapper.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="UserDaoMapper"> <!-- 插入statement useGeneratedKeys:开启主键回写 keyColumn:主键列名(既数据库表中的列名) keyProperty:主键对应的属性名(实体中的属性名) 插入数据时,传过来的参数是一个对象,#{***}中的名字必须与对象中属性名一致 --> <insert id="saveUser" useGeneratedKeys="true" keyColumn="id" keyProperty="id"> INSERT INTO tb_user ( user_name, password, name, age, sex, birthday, created, updated ) VALUES( #{userName}, #{password}, #{name}, #{age}, #{sex}, #{birthday}, NOW(), NOW() ) </insert> </mapper>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> <!-- 引入外部属性资源 --> <properties resource="jdbc.properties" /> <settings> <!-- 设置驼峰匹配 --> <setting name="mapUnderscoreToCamelCase" value="true" /> </settings> <typeAliases> <!-- package 扫描该包下的类,别名就是类名--> <package name="cn.itcast.domain"/> </typeAliases> <environments default="development" > <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <!-- 指定驱动类 --> <property name="driver" value="${jdbc.driverClass}" /> <!-- 指定连接地址 --> <property name="url" value="${jdbc.url}" /> <!-- 指定数据库登录用户 --> <property name="username" value="${jdbc.username}" /> <!-- 数据库密码 --> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments> <!-- 引入map文件 --> <mappers> <mapper resource="UserDaoMapper.xml"/> </mappers> </configuration>jdbc.properties文件
jdbc.driverClass=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mybatis jdbc.username=root jdbc.password=123dao层方法
@Override public void saveUser(User user) { sqlSession.insert("UserDaoMapper.saveUser", user); sqlSession.commit(); sqlSession.close(); }展示结果
image.png源作者:顾国玉 原文:https://blog.csdn.net/u010452388/article/details/80822657
