美文网首页Java进阶开源框架-SpringBoot系列mybatis
SpringBoot整合Mybatis纯注解实现简单增删改查

SpringBoot整合Mybatis纯注解实现简单增删改查

作者: 我永远喜欢御坂美琴 | 来源:发表于2020-01-31 02:52 被阅读0次

    一.环境搭建

    1.创建项目

    此处可使用idea自带的SpringBoot项目创建工具进行创建,选中自己所需模块即可

    创建项目

    使用maven进行项目管理,其中pom.xml文件中会生成以下依赖(SpringBoot开启了所需功能的启动器,会自动将你所需模块可能用到的jar全部导入)

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.1.1</version>
    </dependency>
    
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    

    2.配置数据源

    在resources目录下创建application.yml配置文件,SpringBoot会自动识别并将其作为该项目的总配置文件

    创建yml配置文件

    之后须在该文件中配置数据源,此处使用SpringBoot默认数据源,为hikari

    注:springboot1.0时数据源默认使用的是tomcat,2.0以后换成了hikari
    1.0时,只要导入jdbc、jpa或者mybatis三者依赖之一,默认就带上tomcat数据源
    2.0以后只要导入jdbc、jpa或者mybatis三者依赖之一,默认就带上hikari数据源

    spring:
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/database_name?serverTimezone=GMT%2B8
        username: root
        password: 12345
    

    楼主使用的Mysql版本是8.0.18,其中url需指定时区即serverTimezone=GMT%2B8指定东八区,驱动类的位置相较之前较早版本也发生了变化

    二.写代码!

    1.实体类

    public class JavaBean {
        private Integer id;
        private String name;
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
    

    注:该类中的两个成员变量均与数据库所建表的列名保持一致

    2.Dao层

    @Repository
    public interface DaoMapper {
    
        @Select("select * from javabean")
        List<JavaBean> SelectAll();
    
        @Select("select * from javabean where id=#{id}")
        JavaBean SelectOne(Integer id);
    
        @Delete("delete from javabean where id=#{id}")
        int DeleteOne(Integer id);
    
        @Insert("insert into javabean (id,name) values(#{id},#{name})")
        int InsertOne(JavaBean javaBean);
    
        @Update("update javabean set name=#{name} where id=#{id}")
        int UpdateOne(JavaBean javaBean);
    }
    

    加上@Repository注解,加上该注解的类作为Dao对象(此处为接口),同时需在SpringBoot启动类加上@MapperScan("Dao接口所处的全包名"),Mybatis将自动扫描这个包,找到被@Repository标记的接口,使用动态代理实现方法增强,并交由SpringBoot进行管理。经过这一系列操作,我们就可以将其注入了。

    3.Controller

    @Controller
    @ResponseBody
    public class JavaBeanController {
    
        @Autowired
        DaoMapper daoMapper;
    
        @GetMapping("/SelectAll")
        List<JavaBean> SelectAll(){
            return daoMapper.SelectAll();
        }
    
        @GetMapping("/SelectOne/{id}")
        JavaBean SelectOne(@PathVariable Integer id){
            return daoMapper.SelectOne(id);
        }
    
        @DeleteMapping("/DeleteOne/{id}")
        int DelectOne(@PathVariable Integer id){
            return daoMapper.DeleteOne(id);
        }
    
        @PostMapping("/InsertOne")
        int InsertOne(@RequestBody JavaBean javaBean){
            return daoMapper.InsertOne(javaBean);
        }
    
        @PutMapping("/UpdateOne")
        int UpdateOne(@RequestBody JavaBean javaBean){
            return daoMapper.UpdateOne(javaBean);
        }
    }
    

    API最好遵循RESTful API设计指南设计

    GET(SELECT):从服务器取出资源(一项或多项)
    POST(CREATE):在服务器新建一个资源
    PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)
    PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)
    DELETE(DELETE):从服务器删除资源

    三.调试API

    此处使用Postman进行API调试
    补充一下发送带请求体请求的方法


    类型为json
    编写需发送的json

    四.总结

    如有错误,还劳烦大佬指正,感激不尽

    2020.1.31 深夜2:49

    相关文章

      网友评论

        本文标题:SpringBoot整合Mybatis纯注解实现简单增删改查

        本文链接:https://www.haomeiwen.com/subject/xiwwthtx.html