Mybatis
PageHelper
PageHelper首先将前端传递的参数保存到page这个对象中,接着将page的副本存放入ThreadLoacl中,这样可以保证分页的时候,参数互不影响,接着利用了mybatis提供的拦截器,取得ThreadLocal的值,重新拼装分页SQL,完成分页。参考
<!--MyBatis分页插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.12</version>
</dependency>
@Service
public class DemoServiceImpl implements DemoService {
@Autowired
private PmsBrandMapper brandMapper;
@Override
public List<PmsBrand> listBrand(int pageNum, int pageSize) {
PageHelper.startPage(pageNum, pageSize);
return brandMapper.selectByExample(new PmsBrandExample());
}
}
Mybatis-Generator
java demo 包含 Mybatis-Generator 应用的相关代码。相关代码在 mybatis-generator
模块,核心类: com.zhengcj.demo.mybatis.generator.Generator
,执行该类,就会把 model
、sql
、mapper
生成到 mybatis
模块中。
Mybatis
mybatis-generator 模块 会把代码生成到 mybatis 模块 中。swagger 模块 讲会使用到这些数据,但是在swagger 使用这些数据前,需要进行相关配置,配置的目的在于告诉spring,sql
、mapper
的位置,已经数据库访问需要的 url
, username
,password
.
- MyBatisConfig 申明
mapper
信息(in swagger module)
@Configuration
@MapperScan("com.zhengcj.demo.mybatis.mapper")
public class MyBatisConfig {
}
- application.yml 申明
sql
信息
## 配置mybatis
mybatis:
mapper-locations: classpath:mappers/*.xml
# 全局的映射,不用在xml文件写实体类的全路径
type-aliases-package: com.zhengcj.demo.mybatis.pojo
configuration:
# 开启驼峰映射
map-underscore-to-camel-case: true
- application.yml 申明数据库访问需要的
url
,username
,password
等信息
url 为啥是:spring: datasource: url: jdbc:mysql://mysql:3306/demo?characterEncoding=utf-8 username: root password: root
jdbc:mysql://mysql:3306/demo?characterEncoding=utf-8
?因为访问链接的是Docker里面的mysql,详情参考:docker详解
至此,业务模块就可以通过 mybatis-generator
生成的代码访问数据库数据了。