Spring Boot整合MyBatis
引入MyBatis和数据库驱动依赖
<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> <version>8.0.15</version> </dependency>
使用mybatis-spring-boot-starter,这样可以减少很多配置
减少XML配置;
自动检测存在的DataSource;
自动使用SqlSessionFactoryBean传递DataSource作为一个输入创建和注册一个SqlSessionFactory实例;
自动使用SqlSessionFactory创建和注册一个SqlSessionTemplate实例;
自动扫描mapper,连接这些mapper和SqlSessionTemplate并注册mapper到spring上下文,这样一来这些mapper就可以被注入为您的bean
在SSM架构中,使用MyBatis需要手动配置DataSource,SqlSessionFactory(配置数据源和Mybatis配置文件),MapperScannerConfigurer(扫描Mapper接口类)等,在Mybatis配置文件中可以配置实体别名和mapper的xml文件
使用Mybatis-spring-boot-starter,这些配置都可以在applicaton.yml配置文件中配置
使用Druid数据源
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.6</version> </dependency>
使用阿里的druid作为数据库连接池,该连接池实现了监控的功能
使用MyBatis
SpringBoot中MyBatis的配置
spring: # 数据源(数据库连接)配置 datasource: druid: url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull&useSSL=true&allowMultiQueries=true&serverTimezone=Asia/Hong_Kong username: root password: ranger # 连接池配置 initial-size: 5 min-idle: 5 max-active: 20 max-wait: 30000 # 连接超时时间 # 配置检测可以关闭的空闲连接间隔时间 time-between-eviction-runs-millis: 60000 # 配置连接在池中的最小生存时间 min-evictable-idle-time-millis: 300000 test-while-idle: true test-on-borrow: false test-on-return: false # WebStatFilter配置 web-stat-filter: enabled: true # 添加过滤规则 url-pattern: /* # 忽略过滤的格式 exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*' # StatViewServlet配置 stat-view-servlet: enabled: true # 访问路径为/druid时,跳转到StatViewServlet url-pattern: /druid/* # 是否能够重置数据 reset-enable: false # 需要账号密码才能访问控制台 login-username: druid login-password: ranger # 配置StatFilter filter: stat: log-slow-sql: true driver-class-name: com.mysql.jdbc.Driver # MyBatis的配置 mybatis: # mapper的xml扫描路径 mapper-locations: classpath:mapper/*.xml # type alias的扫描路径 type-aliases-package: com.ranger.boot.mybatis.entity # mybatis配置文件 # config-location: classpath:mybatis-config.xml
启动类配置
@SpringBootApplication // Mapper接口类扫描包 @MapperScan("com.ranger.boot.mybatis.mapper") public class MyBatisApplication { public static void main(String[] args) { SpringApplication.run(MyBatisApplication.class,args); } }
编写对应的实体类,Mapper接口文件和xml文件
public interface UserMapper { List<User> queryUser(); } public class User { private String name; private int age; // getter,setter,toString }
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="com.ranger.boot.mybatis.mapper.UserMapper"> <select id="queryUser" resultType="com.ranger.boot.mybatis.entity.User"> select * from user; </select> </mapper>
- 编写controller类调用UserMapper的方法,提供测试接口
@SpringBootApplication @MapperScan("com.ranger.boot.mybatis.mapper") @Controller public class MyBatisApplication { @Autowired private UserMapper userMapper; public static void main(String[] args) { SpringApplication.run(MyBatisApplication.class,args); } @RequestMapping("users") @ResponseBody public List<User> getAllUser(){ return userMapper.queryUser(); } }
最后启动应用访问users接口,就可以看到数据库中user表所有的记录
结束
简单的语句只需要使用@Insert、@Update、@Delete、@Select
这4个注解即可,动态SQL语句需要使用@InsertProvider、@UpdateProvider、@DeleteProvider、@SelectProvider
等注解,具体使用可以参考MyBatis官方文档
来源:https://www.cnblogs.com/watertreestar/p/11785923.html