SpringBoot整合Mybatis【注解版】 - Go语言中文社区

SpringBoot整合Mybatis【注解版】


一、项目创建

  • 新建一个工程

  • 选择Spring Initializr,配置JDK版本

  • 输入项目名

  •  选择构建web项目所需的staters(启动器)


  • 选择与数据库相关的组件

分析:Spring Boot基本上将我们实际项目开发中所遇到的所有场景都做了封装。它将所有的功能场景都抽取出来,做成了一个个的staters(启动器),只需要在项目的pom.xml配置文件里面引入这些starter相关场景的所有依赖都会导入进来。需要什么功能就导入什么场景的启动器,实质就是通过配置导入了与实现其功能相关的jar包,然后直接进行项开发即可。 


  • 选择保存地址后点击Finish


  • 注意:idea必须在联网环境下才会自动构建项目


package com.cyn.bean;

/**
 * @author:cyn
 * @create:2018/12/30 16:17
 * @description:职位实体类
 */
public class Department {

    private  Integer id;                   //职位id
    private  String departmentName;        //职位名

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getDepartmentName() {
        return departmentName;
    }

    public void setDepartmentName(String departmentName) {
        this.departmentName = departmentName;
    }
}

  • 新建数据库mybatis,在数据库中新建与实体类对象相关联的数据库表 department
SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for department
-- ----------------------------
DROP TABLE IF EXISTS `department`;
CREATE TABLE `department` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `departmentName` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;


  • 在mapper包下新建与实体类所关联的mapper接口【注解版】:DepartmentMapper 
package com.cyn.mapper;

import com.cyn.bean.Department;
import org.apache.ibatis.annotations.*;

/**
 * @author:cyn
 * @create:2018/12/30 16:19
 * @description:职位实体类mapper接口
 */
//指定这是一个操作数据库的mapper
@Mapper
public interface DepartmentMapper {

    @Select("select * from department where id = #{id}")
    public Department getDeptById(Integer id);

    @Delete("delete from department where id = #{id}")
    public int deleteDeptById(Integer id);

    //指定表的id列为自增主键并自动绑定到pojo
    @Options(useGeneratedKeys = true,keyColumn = "id")
    @Insert("insert into department(departmentName) values(#{departmentName})")
    public int insertDept(Department department);

    @Update("update department set departmentName = #{departmentName} where id = #{id}")
    public int updateDept(Department department);
}
  • 常用注解总结: 

  1.    @Mapper:将mapper接口注册到容器中
  2.    @Select:查询
  3.    @Delete:删除
  4.    @Insert:插入 
  5.    @Update:更新
  6.    @Options(useGeneratedKeys = true,keyColumn = "id"):指定表的自增主键并自动绑定到实体类对象    
  7.    @Result 修饰返回的结果集,关联实体类属性和数据库字段一一对应,如果实体类属性和数据库属性名保持一致,    就不需要这个属性来修饰。

  • 在controller包下新建controller控制类:DeptController
package com.cyn.controller;

import com.cyn.bean.Department;
import com.cyn.mapper.DepartmentMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author:cyn
 * @create:2018/12/30 16:27
 * @description:职位管理
 */
@RestController
public class DeptController {

    @Autowired
    DepartmentMapper departmentMapper;


    @GetMapping("/dept/{id}")
    public Department getDepartment(@PathVariable("id") Integer id){

        return departmentMapper.getDeptById(id);

    }

    @GetMapping("dept")
    public Department insertDeptment(Department department){
        departmentMapper.insertDept(department);
        return department;
    }

}
  1. @RestController:等价于同时使用@ResponseBody和@Controller
  2. @GetMapping("/dept/{id}"):等价于@RequestMapping(value = "/dept/{id}",method = RequestMethod.GET)
  3.  /dept/{id}:controller中的url采用restful形式,不会的请自行百度
  4. @PathVariable("id"):将url中相对应参数名的值绑定到指定的形参上

  • 最后项目结构目录如下 


二、其他配置分析

  • 如果数据库表满足驼峰命名规则,查询时候数据则无法自动映射到相对应的实体类属性上,我们可以在config包下新建一个自动配置类:MybatisConfig
package com.cyn.config;

import org.apache.ibatis.session.Configuration;
import org.mybatis.spring.boot.autoconfigure.ConfigurationCustomizer;
import org.springframework.context.annotation.Bean;

/**
 * @author:cyn
 * @create:2018/12/30 17:04
 * @description:自定义Mybatis的配置规则
 */
@org.springframework.context.annotation.Configuration
public class MybatisConfig {

    //注册到容器中
    @Bean
    public ConfigurationCustomizer configurationCustomizer(){
        return new ConfigurationCustomizer(){
            @Override
            public void customize(Configuration configuration) {
                //开启驼峰命名规则
                configuration.setMapUnderscoreToCamelCase(true);

            }
        };
    }
}

  • 如果我们不想每次都在mapper接口上添加@Mapper注解,我们可以在主配置类上通过添加@MapperScan注解来批量扫描指定包下的所有mapper接口,如下:
package com.cyn;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

//添加对mapper的自动扫描
@MapperScan(value = "com.cyn.mapper")
@SpringBootApplication
public class SprignbootDataMybatisApplication {

    public static void main(String[] args) {
        SpringApplication.run(SprignbootDataMybatisApplication.class, args);
    }

}


三、项目测试:

  • 观察数据库,看是否插入成功

  • 至此,springboot整合mybatis成功!如果你失败了,继续调试吧骚年!

( ̄︶ ̄)↗[GO!] 

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_37230121/article/details/85458419
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢