在mapper.xml文件中
<insert id="insertUser" parameterType="User">
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
select count(*) from user
</selectKey>
insert into user(username,userpwd) values (#{username},#{userpwd});
</insert>
main方法中:
SqlSession session = MybatisUtil.getSqlSession();
System.out.println(session);
UserMapper mapper = session.getMapper(UserMapper.class);
User user = new User();
user.setId(5);
user.setUsername("a");
user.setUserpwd("bbbb");
int a = mapper.insertUser(user);
System.out.println(user.getId());
System.out.println("a: " + a);
打印出结果:
14
a=1
说明了:KeyProperty:将查询得到的主键值设置到paramaterType指定的对象的哪个属性。
数据库里的值改了没有?

没有插入id为14的值,将order改成Before:
<selectKey keyProperty="id" order="BEFORE" resultType="java.lang.Integer">
select count(*) from user
</selectKey>

同样是没有的,selectKey部分是不会操作数据库的。
本文深入探讨MyBatis中SelectKey元素的使用方法及注意事项,解析其在不同order属性下对主键生成的影响,帮助读者理解如何正确配置以实现自定义主键生成。
1113

被折叠的 条评论
为什么被折叠?



