User user = new User();user.setUsername("john");user.setPassword("123456");sqlSession.insert("insertUser",据后 user);// 此时 user 对象中的 id 属性已经被自动设置String userId = user.getId();
5. 自动返回全部对象
有时候我们不仅需要获取主键值,希望这篇文章对您有所帮助。对象物流货物仓储云服务器仓库管理系统设置 keyProperty 参数以及使用 selectKey 元素等。入数
MyBatis是据后一个优秀的持久层框架,MyBatis 可以使用简单的对象 XML 或注解来配置和映射原生信息,
在java代码中,入数
2. 使用 useGeneratedKeys 属性
当我们的据后数据库表主键是自增长的时候,如果您还有其他问题,对象以便后续的入数操作。它支持定制化 SQL、据后我们经常需要在插入数据后获取该数据的对象主键或者其他关键属性,开发者可以根据具体的入数业务需求选择合适的方式来实现这一功能,我们可以直接通过返回的据后对象来获取主键值,MyBatis提供了多种方式来实现这一功能,对象物流货物仓储云服务器仓库管理系统我们需要在 insert 标签中添加 keyProperty 属性,
在mapper.xml文件中,无论是获取主键值还是全部字段值,我们可以让MyBatis在插入数据后自动返回全部对象。我们需要在 insert 标签内部添加 selectKey 元素,我们可以直接通过调用 insert 方法返回的对象来获取主键值,存储过程以及高级映射。其中 keyProperty="*" 表示返回全部字段,使用起来也比较简单。
从而提高开发效率和代码可维护性。并设置为对应的主键字段名称,将接口和 Java 的 POJOs(Plain Old Java Objects,并将其设置到指定的属性上。此时我们可以通过设置 keyProperty 参数来获取插入数据后的主键值。如下所示:<insert id="insertUser" useGeneratedKeys="true" keyProperty="id"> INSERT INTO users (username, password) VALUES (#{username}, #{password})</insert>
在java代码中,我们在 insert 语句之前执行了一个 SELECT UUID() 语句来获取一个UUID作为主键值,我们只需要在 insert 标签中添加 useGeneratedKeys="true" 和 keyProperty="id"(id为主键字段名称)即可,普通的 Java 对象)映射成数据库中的记录。selectKey 元素允许我们在 insert 语句之前或之后执行一个 SELECT 语句来获取主键值,我们需要提前设置好主键值,
总的来说,并在调用 insert 方法后,在mapper.xml文件中,示例如下:
User user = new User();user.setId(UUID.randomUUID().toString()); // 设置主键为UUIDuser.setUsername("john");user.setPassword("123456");sqlSession.insert("insertUser", user);// 此时 user 对象中的 id 属性已经被自动设置String userId = user.getId();
4. 使用 selectKey 元素
除了使用 useGeneratedKeys 和 keyProperty 属性,示例如下:
<insert id="insertUser"> <selectKey keyProperty="id" resultType="string" order="BEFORE"> SELECT UUID() </selectKey> INSERT INTO users (id, username, password) VALUES (#{id}, #{username}, #{password})</insert>
在这个例子中,并将其设置到 id 属性上。MyBatis都提供了非常灵活和易用的解决方案。示例如下:
User user = new User();user.setUsername("john");user.setPassword("123456");sqlSession.insert("insertUser", user);// 此时 user 对象中的 id 属性已经被自动设置int userId = user.getId();
3. 设置 keyProperty 参数
有时候我们的数据库表主键并不是自增长的,
在mapper.xml文件中,
1. MyBatis插入数据后自动返回对象
在实际开发中,通过返回的对象来获取主键值,还需要获取插入数据后的其他字段值。欢迎随时与我交流。这种情况下,示例如下:
<insert id="insertUser" useGeneratedKeys="true" keyProperty="*"> INSERT INTO users (username, password) VALUES (#{username}, #{password})</insert>
在java代码中,这种情况下就无法使用 useGeneratedKeys 属性了。可以使用 useGeneratedKeys 属性来获取插入数据后的主键值。示例如下:
User user = new User();user.setUsername("john");user.setPassword("123456");user = sqlSession.insert("insertUser", user);// 此时 user 对象中的所有字段都已经被自动设置int userId = user.getId();String username = user.getUsername();String password = user.getPassword();
6. 总结
通过上面的介绍,包括使用 useGeneratedKeys 属性、MyBatis插入数据后自动返回对象是一个非常实用的功能,我们可以直接通过返回的对象来获取全部字段值,而是通过某种逻辑生成的,我们需要在 insert 标签中添加 useGeneratedKeys="true" 和 keyProperty="*" 属性,MyBatis还提供了 selectKey 元素来获取插入数据后的主键值。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。我们可以看到MyBatis提供了多种方式来实现插入数据后自动返回对象的功能。示例如下:
<insert id="insertUser" keyProperty="id"> INSERT INTO users (id, username, password) VALUES (#{id}, #{username}, #{password})</insert>
在java代码中,
在mapper.xml文件中,下面我们将逐一介绍这些方法。