SpringBoot学习了那么久了,总要拿出来试试操作数据库了吧。以往我们使用JDBC或是JdbcTemplate来操作数据库时,往往开发效率太低,所以我们平时会用到Mybatis框架来作为持久层的技术。这一篇博客来记录一下SpringBoot如何整合基于注解的MyBatis
要使用到Mybatis框架技术首先需要引入相关的jar包,之前我们就介绍过了SpringBoot是通过一个有一个的starter来管理一个又一个的jar包及相关依赖,这里我们也是一样,不过我们使用SpringBoot initializr来创建项目时,选择好相应的模块,它会自动帮我们导入starter。
选择这四个模块(选择web模块是为了显示方便)
由于这篇博客是记录基于注解的,所以就可以直接来编写mapper
了,不需要配置文件.在此之前我们需要先建好表和对应的JavaBean
对象
public class user implements Serializable {
private Integer uid;
private String username;
private String password;
public Integer getUid() {
return uid;
}
public void setUid(Integer uid) {
this.uid = uid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "user{" +
"uid=" + uid +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
之后还要选定数据源,我们这里选用默认的就好,直接在全局配置文件中配置即可:
spring:
datasource:
username: root
password: ***
url: jdbc:mysql://localhost:3306/demo
driver-class-name: com.mysql.jdbc.Driver
在前期工作后,我们就可以直接编写mapper
层的代码了,这里编写增删改查的对应方法:
@Mapper
public interface UserMapper {
@Select("select * from user where uid = #{uid}")
public User findUserByUid(Integer uid);
@Delete("delete from user where uid = #{uid}")
public void deleteUserByUid(Integer uid);
@Insert("insert into user(username,password) values(#{username},#{password})")
public Integer insertUser(User user);
@Update("update user set username = #{username} password = #{password} where uid = #{uid}")
public Integer updateUser(User user);
}
这里insert
和update
方法有返回值,是为了后面介绍一个注解方便观察是否操作成功.
接下来编写controller
层(因为没有啥工程量,跳过service
层),为了方便编写代码,这里直接全部方法都使用Get请求来接受。
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserMapper userMapper;
@GetMapping("/find/{uid}")
public User find(@PathVariable Integer uid){
return userMapper.findUserByUid(uid);
}
@GetMapping("/add")
public User addUser(User user){
userMapper.insertUser(user);
return user;
}
@GetMapping("/delete/{uid}")
public String deleteUser(@PathVariable Integer uid){
userMapper.deleteUserByUid(uid);
return "已经删除";
}
@GetMapping("/update")
public User updateUser(User user){
userMapper.updateUser(user);
return user;
}
}
接着在浏览器访问,先访问addUser方法
我们看到插入执行,在调用查询方法看看是否成功:
到这里就成功了,其他两个方法原理也是一样,这里就不一一调用了。但是还有一个问题,addUser
的json返回值没有uid,这样就看不到插入数据的uid,我们只需要在mapper
的对应方法上加上这条注解
@Options(useGeneratedKeys = true,keyProperty = "uid")
这条注解是Mybatis
的原生注解,前面的属性表示获取数据库自增生成的主键,后面的表示要注入的JavaBean对象的属性名
这是基于注解的Mybatis整合,操作起来比较简单,如果觉得不错的话,点个赞。咱们共勉加油哈.