前言
如果你是一个j2ee开发工程师,你一定不能不会spring,你一定不能不了解spring-boot,你一定不能不知道最火的orm框架Mybatis。
本文使用spring-boot集成mybatis,体会下spring-boot + mybatis实现效率开发数据层代码。
一分钟创建工程
通过idea创建spring-boot项目,File
->New
->Project...
:
点击
Next
配置你的项目的基础信息,再点击Next
,勾选需要的依赖:
创建完毕。耗时不到半分钟。
对于非idea使用的用户,可以直接登录https://start.spring.io,用同样的方式打包你的程序即可。
mybatis自动生成代码
通过mybatis-generator技术来自动生成数据库层相关代码。
大致分为三步:
- 创建表结构。
- 配置 generatorConfig.xml
- 依赖 mybatis-generator-maven-plugin 并运行创建
创建表结构
创建一个简单的用户表:
CREATE TABLE `sbp_user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`nick_name` varchar(50) NOT NULL DEFAULT '' COMMENT '昵称',
`password` varchar(50) NOT NULL DEFAULT '' COMMENT '密码',
`mobile` varchar(15) DEFAULT NULL COMMENT '手机号码',
`create_at` bigint(20) NOT NULL,
`update_at` bigint(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=100 DEFAULT CHARSET=utf8;
配置 generatorConfig.xml
以下配置文件都放置在classpath下:
generator.properties文件:
## jdbc
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://10.0.0.20:3306/spring-boot-practice?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=root
## model
model.targetPackage=com.crw.model
## DAO
dao.targetPackage=com.crw.mapper
dao.type=XMLMAPPER
## table.name=product_honor
table.name=sbp_user
generatorConfig.xml文件:
附录:mybatis generator 配置详解,参考资料:http://www.jianshu.com/p/e09d2370b796
通过mybatis-generator-maven-plugin插件生产代码
配置maven依赖:
...
org.mybatis.generator
mybatis-generator-maven-plugin
1.3.4
true
true
mysql
mysql-connector-java
5.1.41
运行命令:
mvn mybatis-generator:generate
即可生成相应的代码至相应的配置目录。
集成mybatis
三步完成集成:
- 添加maven依赖
- 配置数据源和Mybatis
- 单元测试
添加maven依赖
依赖spring-boot相关以及jdbc相关:
org.springframework.boot
spring-boot-starter
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.3.1
mysql
mysql-connector-java
5.1.41
com.alibaba
druid
1.0.18
配置数据源和Mybatis
配置spring-boot的application.yml
(如果喜欢用application.properties
)的改成相应的格式即可。
如下创建连接池和mybatis配置:
# jdbc-DruidDataSource连接池配置
sbp.datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/spring-boot-practice?useUnicode=true&characterEncoding=utf8mb4&useSSL=false&autoReconnect=true
username: root
password: root
# mybatis
mybatis:
mapperLocations: classpath:mapper/*.xml
configuration.mapUnderscoreToCamelCase: true
创建DataSource,映射配置文件内容,扫描mapper接口:
@Configuration
@MapperScan(basePackages = "com.crw.mapper")
public class DataSourceConfig {
@Bean
@ConfigurationProperties(prefix = "sbp.datasource")
public DataSource datasource() {
return new DruidDataSource();
}
}
单元测试
测试mybatis是否正常:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = App.class)
public class SbpUserMapperTest {
@Autowired
private SbpUserMapper sbpUserMapper;
@Test
@Rollback
public void insert() throws Exception {
long now = System.currentTimeMillis();
int id = sbpUserMapper.insert(new SbpUser(1L, "张三", "111111", "11100001001", now, now));
Assert.assertEquals(id, 1L);
}
@Test
@Rollback
public void selectByPrimaryKey() throws Exception {
SbpUser user = sbpUserMapper.selectByPrimaryKey(1L);
Assert.assertEquals("张三", user.getNickName());
}
@Test
@Rollback
public void update() throws Exception {
long now = System.currentTimeMillis();
sbpUserMapper.updateByPrimaryKey(new SbpUser(1L, "张三改", "111111", "11100001001", now, now));
SbpUser user = sbpUserMapper.selectByPrimaryKey(1L);
Assert.assertEquals("张三改", user.getNickName());
}
@Test
@Rollback
public void selectByExample() throws Exception {
SbpUserExample example = new SbpUserExample();
SbpUserExample.Criteria criteria = example.createCriteria();
criteria.andMobileEqualTo("11100001001");
List users = sbpUserMapper.selectByExample(example);
Assert.assertEquals(users.size(), 1);
}
}
运行之后正常CRUD,完成spring-boot与Mybatis的集成。
结束语
本篇文章从创建spring-boot项目开始介绍了集成mybatis的过程。
可以见到spring-boot是多么的高效:
- 一分钟(半分钟)创建spring-boot项目
- 三步完成myybatis代码自动生成
- 三步配置集成mybatis
前后大概10分钟时间绰绰有余了。效率是不是不差于世界上最好的PHP呢?(:D)