[java]59、java项目开发

1、项目中的对象

在项目开发中定义的对象POBODTOVOPOJOQuery

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的所有属性(数据库表的所有字段)传输给客户端
所以可以根据客户的业务需要对POBO的属性进行删减或增加,重新组装成DTO对象

1.4、VO(View Object):视图对象

传输给客户端的数据展示对象,通常对应一个页面
在有些时候,业务字段的值和最终展示的值是不一样的,比如:在DTO中,sex的值是01
页面AVO中,sex的值是男生、女生
页面BVO中,sex的值是帅哥、美女

1.5、POJO(Plain Ordinary Java Object):简单的Java对象

POBODTOVO的统称

1.6、Query:数据查询对象
对象

2、Layui

Layui是一款前端UI框架,可以帮助开发者快速搭建后台管理系统的前端页面

2.1、Layui的使用

下载解压文件放到项目中

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、双击启动


mybatis-generator

4、Freemarker

跟此前学过的JSPThymeleaf一样,Freemarker也是一款优秀的模板引擎。
可以生成任意格式的文本文件(HTMLXMLJava等),与web环境无关,不依赖web容器
JSPThymeleaf不同
JSP:只能用在web环境中,依赖于web容器
Thymeleaf:虽然不依赖web容器,但它只能生成XML规范的文本文件(比如HTMLXML

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();
    }
}

你可能感兴趣的:([java]59、java项目开发)