项目的DEMO代码:https://github.com/heyu52/-spring-cloud
@MapperScan与@Mapper
可能你会在很多的文章中都能看到,要在项目的入口加上注解@MapperScan。其实这和我使用@Mapper是一样的,两种方法扫描配置用的是一个地方,只是扫描入口不同。
@insert
大家要注意的是这个是有返回的值的,它返回的是你插入了多少条数据,并不是返回你插入行的ID,你可以想一下,你可能一下子插入几条记录,那给你返回哪一行的ID好呢?
关于枚举
在上节的代码基础上,我们新增一个性别的枚举类
package com.csdn.demo.enums;
public enum UserSexEnum {
男, 女
}
我们对Model也进行修改
package com.csdn.demo.model;
import com.csdn.demo.enums.UserSexEnum;
public class User {
private Long id;
private String name;
private int age;
private UserSexEnum sex;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public UserSexEnum getSex() {
return sex;
}
public void setSex(UserSexEnum sex) {
this.sex = sex;
}
@Override
public String toString() {
return ("id=" + this.id + "name=" + this.name + ",age=" + this.age + ",pass=" + this.sex);
}
public User() {
}
public User(String name, UserSexEnum sex, int age) {
this.name = name;
this.sex = sex;
this.age = age;
}
}
我们修改一下插入用户的方法
@RequestMapping("/insertUser")
public int insertUser() {
User user = new User();
user.setName("20190706");
user.setSex(UserSexEnum.男);
user.setAge(99);
userMapper.insertUser(user);
return 1;
}
运行项目,并有浏览器输入:http://127.0.0.1:8080/insertUser
我们先对查询数进行执行一次查询
明显,查询返回的结果是没有问题的。
你可能会在很多的教程上看到这样的写法:
@Select("SELECT * FROM user WHERE id = #{id}")
@Results({
@Result(property = "name", column = "name"),
@Result(property = "sex", column = "sex", javaType = UserSexEnum.class),
})
User getUserById(Long id);
其实就算你不使用javaType ,值也是一样的
关于驼峰规则
如果说我们的数据库命名是了下划线,比如 user_sex,但我们的model定义成使用 UserSex,当然我们可以使用@Results和@Result来解决这个问题,我们还可以直接使用配置,配置mybatis直接支持驼峰规则。我们只要在application.properties使用下面的配置:
mybatis.configuration.map-underscore-to-camel-case=true
输出SQL脚本日志
如果你想把项目执行的SQL脚本都输出来,我们在application.properties只要一个配置项就可以了:
logging.level.com.csdn.demo.mapper=debug
如果测试的时候,你想看得更清楚,那你可以这样配置:
logging.level.com.csdn.demo.mapper=TRACE
这样连结果都打印出来了,还有返回行数。
当然了,这样的输出只能用于我们自己的测试,如果是生产环境,我们应该把日志输出到指定的文件目录中去,并且应该指定日志文件的大小,加上时间等,方便我们查找问题。