mybatis 官网:https://mybatis.org/mybatis-3/zh/index.html
mybatis 配置:https://mybatis.org/mybatis-3/zh/configuration.html#settings
maven repository:https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter

整合 mybatis 有2种方式,可以使用纯手动配置版,也可以使用注解配置混合版。

测试用数据表

image.png

1、配置版

1.1、引入场景启动器

  1. <dependency>
  2. <groupId>org.mybatis.spring.boot</groupId>
  3. <artifactId>mybatis-spring-boot-starter</artifactId>
  4. <version>2.1.4</version>
  5. </dependency>

1.2、声明 Bean

  1. import lombok.Data;
  2. @Data
  3. public class Depart {
  4. private String id;
  5. private String departname;
  6. private String org_code;
  7. private String org_type;
  8. }

image.png

1.3、声明 Mapper 接口

  1. @Mapper
  2. public interface DepartMapper {
  3. public Depart getDepart(String id);
  4. }

image.png

1.4、配置文件

指定全局配置文件位置、SQL映射文件位置。
image.png

application.yml

  1. mybatis:
  2. config-location: classpath:mybatis/mybatis-config.xml
  3. mapper-locations: classpath:mybatis/mapper/*.xml
  4. configuration:
  5. # map-underscore-to-camel-case: true

mybatis-config.xml

全局配置文件模板

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6. <!-- <settings>-->
  7. <!-- 开启驼峰命名规则-->
  8. <!-- <setting name="mapUnderscoreToCamelCase" value="true"/>-->
  9. <!-- </settings>-->
  10. </configuration>

DepartMapper.xml

SQL映射文件

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.example.admin.mapper.DepartMapper">
  6. <select id="getDepart" resultType="com.example.admin.bean.Depart">
  7. select *
  8. from t_s_depart
  9. where id = #{id}
  10. </select>
  11. </mapper>

1.5、编写 service

  1. @Service
  2. public class DepartService {
  3. @Autowired
  4. DepartMapper departMapper;
  5. public Depart getById(String id) {
  6. return departMapper.getDepart(id);
  7. }
  8. }

1.6、编写 controller

  1. @Controller
  2. @Slf4j
  3. public class IndexController {
  4. @Autowired
  5. DepartService departService;
  6. @ResponseBody
  7. @GetMapping(path = "/depart")
  8. public Depart getById(@RequestParam("id") String id) {
  9. return departService.getById(id);
  10. }
  11. }

1.7、测试效果

访问:
http://127.0.0.1/depart?id=402881e5751011b80175102f1e730002
image.png

1.8、一些优化

建议在 application.yml 文件中配置 mybatis 设置来代替 mybatis-config.xml 全局配置文件。

application.yml

  1. mybatis:
  2. # config-location: classpath:mybatis/mybatis-config.xml
  3. mapper-locations: classpath:mybatis/mapper/*.xml
  4. configuration:
  5. # map-underscore-to-camel-case: true

2、注解版

在配置版中,有一个数据表的 SQL 映射文件
DepartMapper.xml

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.example.admin.mapper.DepartMapper">
  6. <select id="getDepart" resultType="com.example.admin.bean.Depart">
  7. select *
  8. from t_s_depart
  9. where id = #{id}
  10. </select>
  11. </mapper>

可以在定义 Mapper 接口时使用 @Select 注解,

  1. @Mapper
  2. public interface DepartMapper {
  3. @Select("select * from t_s_depart where id = #{id}")
  4. public Depart getById(String id);
  5. }

3、混合版

两种模式都可以混合使用

最佳实战

  • 引入mybatis-starter
  • 配置application.yaml中,指定mapper-location位置即可
  • 编写Mapper接口并标注@Mapper注解
  • 简单方法直接注解方式
  • 复杂方法编写mapper.xml进行绑定映射
  • @MapperScan(“com.atguigu.admin.mapper”) 简化,其他的接口就可以不用标注@Mapper注解