SpringBoot学习之路---整合基于注解的Mybatis

SpringBoot学习了那么久了,总要拿出来试试操作数据库了吧。以往我们使用JDBC或是JdbcTemplate来操作数据库时,往往开发效率太低,所以我们平时会用到Mybatis框架来作为持久层的技术。这一篇博客来记录一下SpringBoot如何整合基于注解的MyBatis


要使用到Mybatis框架技术首先需要引入相关的jar包,之前我们就介绍过了SpringBoot是通过一个有一个的starter来管理一个又一个的jar包及相关依赖,这里我们也是一样,不过我们使用SpringBoot initializr来创建项目时,选择好相应的模块,它会自动帮我们导入starter
SpringBoot学习之路---整合基于注解的Mybatis_第1张图片
选择这四个模块(选择web模块是为了显示方便)

由于这篇博客是记录基于注解的,所以就可以直接来编写mapper了,不需要配置文件.在此之前我们需要先建好表和对应的JavaBean对象

表:
SpringBoot学习之路---整合基于注解的Mybatis_第2张图片
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);
}

这里insertupdate方法有返回值,是为了后面介绍一个注解方便观察是否操作成功.

接下来编写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方法
SpringBoot学习之路---整合基于注解的Mybatis_第3张图片
我们看到插入执行,在调用查询方法看看是否成功:
SpringBoot学习之路---整合基于注解的Mybatis_第4张图片
到这里就成功了,其他两个方法原理也是一样,这里就不一一调用了。但是还有一个问题,addUser的json返回值没有uid,这样就看不到插入数据的uid,我们只需要在mapper的对应方法上加上这条注解

@Options(useGeneratedKeys = true,keyProperty = "uid")

这条注解是Mybatis的原生注解,前面的属性表示获取数据库自增生成的主键,后面的表示要注入的JavaBean对象的属性名

接着在测试一下
SpringBoot学习之路---整合基于注解的Mybatis_第5张图片
可以看到在数据库中的uid了。


这是基于注解的Mybatis整合,操作起来比较简单,如果觉得不错的话,点个赞。咱们共勉加油哈.

你可能感兴趣的:(SpringBoot)