美文网首页javaalready
[java]59、java项目开发

[java]59、java项目开发

作者: 史记_d5da | 来源:发表于2022-09-30 10:13 被阅读0次

    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 GeneratorMyBatis官方提供的代码生成器
    可以根据数据库信息,逆向生成Model类、Mapper类、Mapper配置文件。大大节省开发者的编码时间,提高开发效率

    3.1、MyBatis Generator的配置文件

    mybatis-generator的作用:
    能够生成PO类,能生成mapper映射文件(其中包括基本的增删改查功能)、能生成mapper接口。
    1、添加maven的plugin依赖

    <build>
        <plugins>
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.2</version>
                <configuration>
                    <configurationFile>src/main/test/resources/generatorConfig.xml</configurationFile>
                    <overwrite>true</overwrite>
                    <verbose>true</verbose>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>5.1.49</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>
    

    2、配置generatorConfig.xml文件
    可以到官网拷贝头信息

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE generatorConfiguration
            PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
            "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
    <generatorConfiguration>
        <context id="default" targetRuntime="MyBatis3Simple">
            <commentGenerator>
                <!--            去掉所有注释-->
                <property name="suppressAllComments" value="true"/>
            </commentGenerator>
            <!--        数据库连接-->
            <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                            connectionURL="jdbc:mysql://localhost:3306/jiakao?serverTimezone=GMT%2B8"
                            userId="root" password="shijikl126"/>
            <!--        XML的位置-->
            <javaModelGenerator targetPackage="com.mj.jk.pojo.po"
                                targetProject="src/test/java" />
            <!--        XML的位置-->
            <sqlMapGenerator targetPackage="com.mj.jk.mapper"
                             targetProject="src/test/resources" />
            <!--        Mapper的位置-->
            <javaClientGenerator type="XMLMAPPER"
                                 targetPackage="com.mj.jk.mapper"
                                 targetProject="src/test/java"/>
            <!--        %代表所有表-->
            <table tableName="%" />
        </context>
    </generatorConfiguration>
    

    3、双击启动


    mybatis-generator

    4、Freemarker

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

    4.1、Freemaker的使用

    1、在maven中添加依赖

    <dependencies>
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.30</version>
        </dependency>
    </dependencies>
    

    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<String, Object> 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中的使用
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-freemarker</artifactId>
    </dependency>
    

    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

    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.4.1</version>
    </dependency>
    

    2、mapper接口继承BaseMapper
    BaseMapper实现了数据库的基本操作

    @Mapper
    public interface DictTypeMappper extends BaseMapper<DictType> {
    }
    

    3、service继承IService

    public interface DictTypeService extends IService<DictType> {
    }
    

    4、impl中实现继承ServiceImpl

    @Service
    @Transactional
    public class DictTypeServiceImpl extends ServiceImpl<DictTypeMappper, DictType> implements DictTypeService {
        @Autowired
        private DictTypeMappper mappper;
        @Override
        public List<DictType> list(DictTypeQuery query) {
            LambdaQueryWrapper<DictType> 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<DictType> page = new Page<>(query.getPage(), query.getSize());
            return mappper.selectPage(page, wrapper).getRecords();
        }
    }
    

    相关文章

      网友评论

        本文标题:[java]59、java项目开发

        本文链接:https://www.haomeiwen.com/subject/cwhuortx.html