hooyantsing's Blog

第122次课程_框架项目案例_T1L1

字数统计: 1.2k阅读时长: 5 min
2020/03/10

源辰76班

第122次课程

2020.03.10

内容

框架项目案例_T1L1[廖彦]

项目路径:

1.逆向工程

Mybatis工具:mybatis-generator

根据数据库结构生成Mybatis的bean包和dao包(包含接口类和对应的Mapper.xml)。

pom.xml插件

1
2
3
4
5
<build>
    <plugins>
        插件
    <plugins>
</build>

插件

在pom.xml内引入以下代码:

pom.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<build>
           <plugins>
                <plugin>
                     <groupId>org.springframework.boot</groupId>
                     <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
                
                <!-- MyBatis 反向工程插件 -->
                <plugin>
                     <groupId>org.mybatis.generator</groupId>
                     <artifactId>mybatis-generator-maven-plugin</artifactId>
                     <version>1.3.7</version>
                     <dependencies>
                           <dependency>
                                <groupId>mysql</groupId>
                                <artifactId>mysql-connector-java</artifactId>
                                <version>5.1.47</version>
                           </dependency>
                     </dependencies>
                </plugin>
           </plugins>
</build>

配置文件

将配置文件放置resources/generatorConfig.xml

generatorConfig.xml

蓝色部分是根据项目而本地化更改的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?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>
     <!-- 覆盖之前生成的文件命令:-Dmybatis.generator.overwrite=true mybatis-generator:generate -->
     <context id="MySQLTables" targetRuntime="MyBatis3">
           <commentGenerator>
                <!-- 不生成注释 -->
                <property name="suppressAllComments"  value="true" />
           </commentGenerator>
           <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                connectionURL="jdbc:mysql://127.0.0.1/C76-S3-Phooy-blog?serverTimezone=UTC&amp;CharacterEncoding=UTF-8&amp;useSSL=false"
                userId="root" password="a">
                <property name="nullCatalogMeansCurrent"  value="true" />
           </jdbcConnection>
           <!-- 实体类包名 -->
           <javaModelGenerator
                targetPackage="com.yc.blog.bean"  targetProject="src/main/java">
                <!-- 字符串属性加入 trim 函数 -->
                <property name="trimStrings" value="true" />
           </javaModelGenerator>
           <!-- Dao类包名 -->
           <sqlMapGenerator targetPackage="com.yc.blog.dao"
                targetProject="src/main/java">
           </sqlMapGenerator>
           <javaClientGenerator type="XMLMAPPER"
                targetPackage="com.yc.blog.dao"  targetProject="src/main/java">
           </javaClientGenerator>
           <!-- % 表示所有表,更改时间类型 -->
           <table tableName="%">
                <generatedKey column="id" sqlStatement="mysql"
                     identity="true" />
           </table>
     </context>
</generatorConfiguration>

执行

maven build… 

1
-Dmybatis.generator.overwrite=true mybatis-generator:generate

.png

插件配置文件在生成对应的包后,可以删除并不会影响项目。这仅仅是一个工具。

1.2 生成的Mapper.java接口词汇解析

定义方法名:

count:返回的是数字,例如表记录的个数。

含有Excample:组合条件查询对象。

含有Selective:一条表记录,更改了哪个分量,哪个分量数据更新,其他分量不变。

不含有Selective:一条表记录,更改了分量,全分量都更新,没有修改的分量将null。相当于删除了这条记录,又添加了一条新的记录,有些字段没值就成了null。

含有WithBLOBs:表示操作数据库中的BLOB or CLOB(很大数据类型)。

含有PrimaryKey:表示根据主键进行的操作。

2.MG生成代码的使用

-1.png

BlogApplicationTest.java

介绍方法使用

例如数据库Article。首先创建一个ArticleExample组合条件查询对象,然后为这个对象创建条件Criteria,最后将组合条件查询对象放入Mapper接口对象里查询,返回表记录bean对象。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package com.yc.blog;

import java.util.List;
import javax.annotation.Resource;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.util.Assert;
import com.yc.blog.bean.Article;
import com.yc.blog.bean.ArticleExample;
import com.yc.blog.bean.ArticleExample.Criteria;
import com.yc.blog.dao.ArticleMapper;
import com.yc.blog.dao.UserMapper;

@SpringBootTest
class BlogApplicationTests {
    
    @Resource
    private UserMapper um;
    
    @Resource
    private ArticleMapper am;

    @Test
    void contextLoads() {
        Assert.isTrue(um.selectByExample(null).size() > 0, "结果集数量不正确!");
        
        // 如何使用组合条件查询
        // careatetime is not null and title like '%css%'
        
        //创建一个组合条件查询对象
        ArticleExample ae = new ArticleExample();
        
        //由这个对象来创建条件
        Criteria c = ae.createCriteria();
        c.andCreatetimeIsNotNull();
        c.andTitleLike("%css%");
        //相当于以下代码,每次调用都返回同一个对象,因此可以链接下去
        //c.andCreatetimeIsNotNull().andTitleLike("%css%");
        
        //组合条件查询对象放入到 接口对象里查询,返回数据库表记录(bean对象)
        List<Article> list = am.selectByExample(ae);
        
        System.out.println(list);
        
        // 查询文章:  label 带 s   分类 category = 3 的记录
        
    }
    
}

3.thymeleaf 引入模板

动态的将其他html文件内的代码加入到另一个html中。

1.在被引入页面元素定义,使用th:fragment属性定义片段。

2.在引入页面使用:

**    th:insert**

**    th:replace**

**    th:include**

被引入页面

格式:th:fragment=”模板id

-2.png

引入页面

格式:th:replace=”被引入页面路径::模板id”

-3.png

CATALOG