Springboot 整合mybatis(无需配置任何xml文件)

时间:2024-11-14 13:36:24

Springboot 整合mybatis(无需配置任何xml文件)

环境

  • spring-boot 2.0.
  • maven 3.5.3
  • JDK 1.8
  • mybatis-spring-boot-starter 1.3.2

背景

百度上看到非常多springboot整合mybatis的教程还在用spring那一套,各种xml文件配置,非常的繁琐,实际上mybatis已经为springboot给出了支持——mybatis-spring-boot-starter。
/mybatis/spring-boot-starter/wiki/Quick-Start 也有官方的快速搭建教程,不过讲得不太清楚所以我再仔细介绍一下。

使用流程

  • 依赖引入
  • 配置文件配置
  • 创建实体类
  • 创建相应Mapper接口
  • 直接调用即可

1、maven引入

pom引入如下(版本可自行去上面的网址找最新的)

<dependency>
    <groupId></groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.2</version>
</dependency>

2、配置文件配置

因为省去了mybatis的xml配置文件,所以mybatis的相关配置就需要写到(或者.properties,我用的yml格式)文件中去,如下所示:

mybatis:
  configuration:
    cache-enabled: false
    map-underscore-to-camel-case: true
    use-generated-keys: true
    default-executor-type: reuse
    default-statement-timeout: 600

其配置很多,这儿没有一 一列举,有兴趣可以在官网查阅,只要是能写在xml文件里的配置都可以在这儿直接配了。

3、创建实体类

以User为例

public class User {

    private Long id;

    private String name;

    private String phone;
}

mybatis查完数据库后会自动把数据填进去,所以注意属性名一定要和表中的列名在命名规则下一致(如果没有配置数据库驼峰命名法就是实体中的大写对应数据库的_和小写。如实体中的userName就对应数据库中user_name。所以推荐配置命名规则为驼峰命名法,即配置文件中use-generated-keys: true,这样实体中的userName就对应数据库中userName)

4、创建相应的mapper接口

这个mapper接口就取代了*等的作用,一个接口就都搞定了,示例如下:

@Mapper
@Component
public interface UserMapper {

    @Select("select * from user")
    List<User> getAllUsers();
}

首先需要在类前加上@Mapper的注解,这样才能够标记这个接口被mybatis所查找到,如果嫌每个类都注解很麻烦也可以直接在中注解mapper扫描目录如@MapperScan(“”)。
然后再直接写相应的方法并在方法上面标注mybatis动作即可,这儿不做过多的赘述
最后要提一下的就是@Component,因为在IDEA中有bean检测,所以为了防止它提示 Could not autowire. No beans of ‘UserDao’ type found. Checks autowiring problems in a bean class. 加一个@Component注解,实际上即使不加也不影响使用。

5、开始调用

调用就没什么好说的了,

    @Autowired
    private UserMapper userMapper;

@Autowired注入进来该在哪儿用就直接在哪儿用就好了。