如今业界比较流行的数据操做层框架 MyBatis,下面就讲解下 Springboot 如何整合 MyBatis,这里使用的是xml配置SQL而不是用注解。主要是 SQL 和业务代码应该隔离,方便和 DBA 校对 SQL。java
https://github.com/JasperZXY/TestSpringCloud/tree/master/boot-featuremysql
因为我不少功能放在同一个项目里面,因此代码看起来没有那么清晰,不过将就看仍是能够的。git
src/ +- main/ +- java/ +- zxy.demo.springboot.mybatis +- entity +- dao +- web |- MainApplicion.java +- resources/ +- mapper |- application.properties
数据库用的是MySQLgithub
CREATE DATABASE test_spring_boot;
CREATE TABLE `user` ( `id` int(11) NOT NULL COMMENT '主键', `name` varchar(64) NOT NULL COMMENT '姓名', `birthday` date DEFAULT NULL COMMENT '生日', `address` varchar(256) DEFAULT NULL COMMENT '地址', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
若是没有mybatis-generator,能够下载一个。
mybatis-generator的下载地址web
使用mybatis-generator工具生成相关文件,实体对象、dao接口、xml文件。spring
添加必要的依赖sql
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> <mybatis-spring-boot.version>1.2.0</mybatis-spring-boot.version> <mysql-connector.version>5.1.39</mysql-connector.version> </properties> <dependencies> <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>${mybatis-spring-boot.version}</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql-connector.version}</version> </dependency> </dependencies>
打开 application.properties 文件, 修改相应的数据源配置,好比数据源地址、帐号、密码等,以下数据库
spring.datasource.url=jdbc:mysql://localhost:3306/test_spring_boot?useUnicode=true&characterEncoding=utf8 spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.jdbc.Driver mybatis.typeAliasesPackage=zxy.demo.springboot.boot_feature.entity mybatis.mapperLocations=classpath:mapper/*.xml
注意根据本身的实现项目目录进行相应的修改。浏览器
须要配置dao文件,也即操做数据表的接口。springboot
经过@MapperScan注解进行dao文件的扫描,以下
// MyBatis 支持 @MapperScan("zxy.demo.springboot.mybatis.dao") @SpringBootApplication public class MainApplicion { public static void main(String[] args) throws Exception { SpringApplication.run(MainApplicion.class, args); } }
@RequestMapping("user") @RestController public class UserController { @Autowired private UserMapper userMapper; @GetMapping("/list/all") public Object listAll() { return userMapper.selectByExample(new UserExample()); } }
右键运行 Application 应用启动类的 main 函数,而后在浏览器访问便可看到数据。
http://localhost:8080/user/list/all
[ { id: 1, name: "张三", birthday: 1491667200000, address: "深圳" } ]
SpringMVC是经过xml进行配置,经过配置DataSource、SqlSessionFactoryBean、MapperScannerConfigurer来完成MyBatis的整合。
而SpringBoot是经过application.properties配置数据源、实体bean包名、mapper文件位置和@MapperScan
注解来配置扫描的dao路径,从而实现MyBatis的整合。