# spring-boot-demo-orm-mybatis
依赖 [spring-boot-demo-parent](../spring-boot-demo-parent)、`mybatis-spring-boot-starter`、`druid-spring-boot-starter`、`mapper-spring-boot-starter`(通用Mapper)、`pagehelper-spring-boot-starter`(分页插件PageHelper)
### pom.xml
```xml
4.0.0
spring-boot-demo-orm-mybatis
0.0.1-SNAPSHOT
war
spring-boot-demo-orm-mybatis
Demo project for Spring Boot
com.xkcoding
spring-boot-demo-parent
0.0.1-SNAPSHOT
../spring-boot-demo-parent/pom.xml
1.3.1
1.1.5
1.1.1
1.1.0
org.mybatis.spring.boot
mybatis-spring-boot-starter
${mybatis.starter.version}
com.alibaba
druid-spring-boot-starter
${druid.starter.version}
tk.mybatis
mapper-spring-boot-starter
${mapper.version}
com.github.pagehelper
pagehelper-spring-boot-starter
${pagehelper.version}
spring-boot-demo-orm-mybatis
```
### application.yml
```yaml
server:
port: 8080
context-path: /demo
spring:
# json 转化移除 null 字段
# jackson:
# default-property-inclusion: non_null
datasource:
# 启动时自动运行的 SQL 文件
schema: classpath:init-sql/schema.sql
continue-on-error: true
druid:
url: jdbc:mysql://localhost:3306/spring-boot-demo?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
# 连接池配置
# 初始化大小,最小,最大
initialSize: 5
minIdle: 5
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
# 打开PSCache,并且指定每个连接上PSCache的大小
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
filters: stat,wall,log4j
# 监控配置
web-stat-filter:
enabled: true
url-pattern: /*
exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
stat-view-servlet:
enabled: true
url-pattern: /sys/druid/*
reset-enable: fasle
login-username: xkcoding
login-password: 123456
filter:
stat:
log-slow-sql: true
slow-sql-millis: 5000
merge-sql: true
# mybatis 配置
mybatis:
type-aliases-package: com.xkcoding.springbootdemoormmybatistis.model
mapper-locations: classpath:mapper/*.xml
# 配置项:开启下划线到驼峰的自动转换. 作用:将数据库字段根据驼峰规则自动注入到对象属性
configuration:
map-underscore-to-camel-case: true
# 通用 Mapper 配置
mapper:
not-empty: false
identity: MYSQL
mappers: com.xkcoding.springbootdemoormmybatistis.util.MyMapper
# PageHelper 配置
pagehelper:
helper-dialect: mysql
reasonable: true
support-methods-arguments: true
params: count=countSql
```
### schema.sql
```mysql
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `boot_user`
-- ----------------------------
DROP TABLE IF EXISTS `mybatis_user`;
CREATE TABLE `mybatis_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(32) DEFAULT NULL,
`tel` varchar(11) DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of boot_user
-- ----------------------------
INSERT INTO `mybatis_user` VALUES (1, 'klay', '13799008800', '2017-11-13 16:04:39');
INSERT INTO `mybatis_user` VALUES (2, 'Tome', '18988991234', '2017-11-13 16:13:28');
```
### SpringBootDemoOrmMybatisApplication.java
```java
@SpringBootApplication
@MapperScan(basePackages = {"com.xkcoding.springbootdemoormmybatis.mapper"})
public class SpringBootDemoOrmMybatisApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootDemoOrmMybatisApplication.class, args);
}
}
```
### MybatisUser.java
```java
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
@Table(name = "mybatis_user")
public class MybatisUser {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY,generator = "JDBC")
private Long id;
@Column(name = "name")
private String name;
@Column(name = "tel")
private String tel;
@Column(name = "create_time")
private Date createTime;
}
```
### MyMapper.java
```java
public interface MyMapper extends Mapper, MySqlMapper {
}
```
### MybatisUserMapper.java
```java
@Component
public interface MybatisUserMapper extends MyMapper {
MybatisUser findByName(@Param("name") String name);
}
```
### MybatisUserMapper.xml
```xml
```
### 其余代码
详情请参见本demo。