1、项目中的对象
在项目开发中定义的对象PO
、BO
、DTO
、VO
、POJO
、Query
1.1、PO
(Persistent Object):持久化对象
属性跟数据库表的字段对应,一个PO
对象对应数据库表的一条记录
1.2、BO
(Business Object):业务对象
一类业务就会对应一个BO
,除了get\set
方法以外,它会有很多业务操作,比如对自身数据进行计算的方法
- 比如:
PO1
是教育经历,PO2
是工作经历,PO3
是项目经验。BO
是简历,包含PO1
~PO3
- 比如:
PO1
是交易记录,PO2
是登记记录,PO3
是商品浏览记录,PO4
是购物车记录,PO5
是搜索记录。BO
是个人行为,包含PO1
~PO5
1.3、DTO
(Data Transfer Object):数据传输对象
很多时候并不需要PO
的所有属性(数据库表的所有字段)传输给客户端
所以可以根据客户的业务需要对PO
、BO
的属性进行删减或增加,重新组装成DTO
对象
1.4、VO
(View Object):视图对象
传输给客户端的数据展示对象,通常对应一个页面
在有些时候,业务字段的值和最终展示的值是不一样的,比如:在DTO
中,sex
的值是0
、1
页面A
的VO
中,sex
的值是男生、女生
页面B
的VO
中,sex
的值是帅哥、美女
1.5、POJO
(Plain Ordinary Java Object):简单的Java
对象
是PO
、BO
、DTO
、VO
的统称
1.6、Query
:数据查询对象
2、Layui
Layui是一款前端UI框架,可以帮助开发者快速搭建后台管理系统的前端页面
2.1、Layui的使用
下载解压文件放到项目中
3、MyBatis Generator
MyBatis Generator是MyBatis
官方提供的代码生成器
可以根据数据库信息,逆向生成Model
类、Mapper
类、Mapper
配置文件。大大节省开发者的编码时间,提高开发效率
3.1、MyBatis Generator的配置文件
mybatis-generator
的作用:
能够生成PO
类,能生成mapper
映射文件(其中包括基本的增删改查功能)、能生成mapper接口。
1、添加maven的plugin
依赖
org.mybatis.generator
mybatis-generator-maven-plugin
1.3.2
src/main/test/resources/generatorConfig.xml
true
true
mysql
mysql-connector-java
5.1.49
2、配置generatorConfig.xml
文件
可以到官网拷贝头信息
3、双击启动
4、Freemarker
跟此前学过的JSP
、Thymeleaf
一样,Freemarker
也是一款优秀的模板引擎。
可以生成任意格式的文本文件(HTML
、XML
、Java
等),与web
环境无关,不依赖web
容器
与JSP
、Thymeleaf
不同
JSP
:只能用在web
环境中,依赖于web
容器
Thymeleaf
:虽然不依赖web
容器,但它只能生成XML
规范的文本文件(比如HTML
、XML
)
4.1、Freemaker的使用
1、在maven
中添加依赖
org.freemarker
freemarker
2.3.30
2、创建模板文件mapper.ftl
package com.sj.jk.mapper;
import com.sj.jk.pojo.po.${type};
import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface ${type}Mappper extends BaseMapper<${type}>{
}
3、生成模板文件的java
代码
public class Main {
public static void main(String[] args) throws Exception {
Configuration configuration = new Configuration(Configuration.VERSION_2_3_30);
// 设置编码
configuration.setDefaultEncoding("UTF-8");
// 模板文件的存放目录
configuration.setDirectoryForTemplateLoading(new File("/Users/shiji/development/templates/"));
// 获取模板文件
Template tpl = configuration.getTemplate("mapper.ftl");
// 数据
Map data = new HashMap<>();
data.put("type", "DictType");
try( FileWriter out = new FileWriter(new File("/Users/shiji/development/templates/DictType.java"))) {
tpl.process(data, out);
}
}
}
4.2、注释
<#-- -->
这种注释不会渲染到HTML中
4.3、在SpringBoot
中的使用
org.springframework.boot
spring-boot-starter-freemarker
和Thymeleaf
资源文件一样的地方
静态资源:放在classpath:/static/
目录下
模板文件:放在classpath:/templates/
目录下
freemarker
的模板文件扩展名要用.ftlh
,而不是.ftl
默认在视图解析器前增加:classpath:/templates/
,后缀:.ftlh
获取context path
,赋值给变量ctx
(和jsp相似)
<#assign ctx="${springMacroRequestContext.getContextPath()}">
5、MyBatis-Plus
MyBatis-Plus(简称MP
)是MyBatis
增强工具
在MyBatis
的基础上只做增强不做改变,为简化开发,提高效率
5.1、MyBatis-Plus的简单使用
1、maven
中添加依赖
mybatis-plus
默认依赖mybatis
com.baomidou
mybatis-plus-boot-starter
3.4.1
2、mapper
接口继承BaseMapper
BaseMapper
实现了数据库的基本操作
@Mapper
public interface DictTypeMappper extends BaseMapper {
}
3、service
继承IService
public interface DictTypeService extends IService {
}
4、impl
中实现继承ServiceImpl
@Service
@Transactional
public class DictTypeServiceImpl extends ServiceImpl implements DictTypeService {
@Autowired
private DictTypeMappper mappper;
@Override
public List list(DictTypeQuery query) {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
String keyword = query.getKeyword();
wrapper.like(DictType::getName, keyword).or()
.like(DictType::getValue, keyword).or()
.like(DictType::getIntro, keyword);
wrapper.orderByDesc(DictType::getId);
Page page = new Page<>(query.getPage(), query.getSize());
return mappper.selectPage(page, wrapper).getRecords();
}
}