wonderq_ubuntu
2019-02-17 14:47
为什么在 mapper java文件中的这些方法,例如updateByPrimaryKeySelective,
insertSelective
在 sql 的 xml 中并没有返回主键id,请问但是缺能接收到,请问是如何做到的?或者说哪里实现的?谢谢老师,这是我能够提问的最后连个积分了,剩下还有问题我都放到评论区里面了,希望老师能够回答下,不吝赐教。谢谢!
为啥log.info("code={} msg={} data={} ",code,msg,data); 这句话输出没有一个 {} 花括号
别放在评论,不然其他想告诉你的不方便,在这个花括号是占位符,输出是,后面的参数依次替换前面的花括号,我用的logback好像最多只能有两个花括号(原谅我答非所问)
本问题的答案:
这个问题问的比较深,我回答不了
但是还是想跟你说下,方法的返回值跟主键没有关系,增删改返回值是影响的数据库操作的条数数据,具体实现我解释不了;
插入返回主键的id在插入数据的实体类中,不是方法的返回值,实现SQL是
希望能给你增加一点理解
1、insertxxxx调用 会返回主键是因为 .xml 里面配置了这个:useGeneratedKeys=
"true"
keyColumn=
"id"
2、但是要获取主键,需要调用时这样做:对象.insertxxx()之后,
对象.getId() 就是返回的主键;而 对象.insertxxx() 的返回值是操作数据库后受影响的行数!
回复 wonderq_ubuntu:log.info("响应结果:{} ",res);
原因可能是日志jar包要导入有问题:
<!--属性-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
</dependency>
<!--日志-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
<exclusions>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
在类上使用注解:@Slf4j
就可以使用log对象了,你试试
lombok了解一下
<insert id="add" useGeneratedKeys="true" keyColumn="id" keyProperty="id" parameterType="user"> INSERT INTO `user` (`name`,sex,register_ts) VALUES (#{name},#{sex},#{registerTs}) <selectKey resultType="int" keyProperty="id" order="AFTER"> SELECT LAST_INSERT_ID() </selectKey> </insert>
插入返回主键是这样写的 <insert id="add" useGeneratedKeys="true" keyColumn="id" keyProperty="id" parameterType="user"> INSERT INTO `user` (`name`,sex,register_ts) VALUES (#{name},#{sex},#{registerTs}) <selectKey resultType="int" keyProperty="id" order="AFTER"> SELECT LAST_INSERT_ID() </selectKey> </insert>
2小时实战Apache顶级项目-RPC框架Dubbo分布式服务调度
20338 学习 · 145 问题
相似问题