框架结构
按照笔记一的做法,项目分为元件库、框架、项目开发,元件库和框架可以在不同的项目中重复使用,也即以后不同的项目只要引入这2个jar文件即可使用spring boot一系列的功能,项目只用专注于本身的业务即可,如本案例的结构如下
hn-component
元件库,也是最顶层的jar,主要是一些基础类和工具类
hn-framework
项目的基础框架,包括springboot ,mybatis,mybatisplus,redis 等集成封装环境,也包含一些自定义的功能,例如日志、mybatisplus的二次封装、排程、后台的路由权限等等。
demo
本次案例的项目,在实际中就是待开发的项目
整合mybatis plus
打开hn-framework 中的pom.xml, 引入相应的jar包
<!--元件库-->
<dependency>
<groupId>com.hnexm.component</groupId>
<artifactId>hn-component</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- MyBatis-plus插件-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.0</version>
</dependency>
<!--代码生成器-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.1.0</version>
</dependency>
<!-- 模板引擎-->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.28</version>
</dependency>
<!-- alibaba的druid数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.16</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
上面相应的jar看名称就能知道是干什么用的,就不多做说明了
修改项目的pom.xml ,这里就是demo
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.hnexm.framework</groupId>
<artifactId>hn-framework</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
这里主要就是引入我们自己的框架即可,(spring-boot-starter-test 是用于做junit测试所用)
编写配置文件 application.yml
server:
port: 8888
#数据源配置
spring:
datasource:
name: test
url: jdbc:mysql://localhost:3306/test?useUnicode=true&serverTimezone=GMT&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
username: root
password: 123456
# 使用druid数据源
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
druid:
initialSize: 5
minIdle: 5
maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: select 'x'
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
maxOpenPreparedStatements: 20
maxPoolPreparedStatementPerConnectionSize: 20
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙,此处是filter修改的地方
filters: stat,wall,log4j
statViewServlet:
enabled: true
allow: 127.0.0.1 #允许哪些ip访问,没有配置或者为空,则允许所有访问
url-pattern: /druid/*
loginUsername: admin
loginPassword: 123456
webStatFilter:
enabled: true
exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
url-pattern: /*
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
# 合并多个DruidDataSource的监控数据
useGlobalDataSourceStat: true
## 独立的节点,有很多同学容易将这个配置放在spring的节点下,导致配置无法被识别
mybatis-plus:
mapper-locations: classpath*:mapping/**/*Mapper.xml #注意:一定要对应mapper映射xml文件的所在路径
type-aliases-package: com.hnexm.**.entity # 注意:对应实体类的路径
configuration:
mapUnderscoreToCamelCase: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
以上代码关键的地方都有注释,都是通用的,大家看看名字也就明白了。
数据库
创建一个名称为:test 的数据库,创建2个基本的表。如下图
sys_user : 用户表 ; log: 日志表
通过模版文件,自动生成相应的代码
运行 MysqlGenerator.java ,查看控制台,按照提示输入相应的内容即可,如下图
生成好后,刷新项目目录,则会发现出现相应的各层的代码,如下图
这里要将实体类修改下,加上主键ID,将对应的Mapper.java文件加上注解
PS:实体类上默认可以不加@TableName,我的习惯是加上。
接下来模拟新增一个账号的程序。
controller
@RestController
@RequestMapping("sysUser")
public class SysUserController {
@Autowired
ISysUserService sysUserService;
@PostMapping("create")
public AjaxResponse create(@RequestBody final SysUser user) {
return sysUserService.create(user);
}
}
service
@Service
public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements ISysUserService {
@Autowired
ILogService logService;
@Override
public AjaxResponse create(final SysUser user) {
try {
final Log log = new Log();
log.setId(HnIdUtils.getNewId());
log.setUrl("sysUser/user");
logService.save(log);
user.setId(HnIdUtils.getNewId());
this.save(user);
} catch (final Exception e) {
throw new HnException("新增用户异常:" + e.getMessage());
}
return new SucceedResponse("新增用户成功");
}
}
这里的主键是自定义的,大家可以自行编写,网上很多。
用postman提交模拟数据。
如上图所示,用户添加成功,打开数据库查看内容
查看druid
在浏览器中输入:http://127.0.0.1:8888/druid/login.html
如果能够打开登录页面,说明配置成功,然后用配置文件里设置的帐号密码登录,登录后如下图所示:
以上就初步的完成了springboot \mybatis plus\druid 的初级集合,后续还有很多需要完善的地方,例如数据库事务、日志的自动处理、新增修改数据时自动更新数据的编写者和时间,删除的状态统一处理,这些都是要通过框架的二次封装来完成的。