目录

  • 1 2023广东省精品课程评审申报章节
    • 1.1 申报书
    • 1.2 总结报告
    • 1.3 课程数据信息表
    • 1.4 自评报告
    • 1.5 专家组评语
    • 1.6 相关佐证
  • 2 2020校精品课程评审申报章节
    • 2.1 验收材料总文档
    • 2.2 精品开放课程申报书
    • 2.3 精品开放课程结题验收报告书
    • 2.4 精品开放课程结题验收总结报告
    • 2.5 精品开放课程结题验收项目汇总表
    • 2.6 佐证1.课程基础与建设目标
      • 2.6.1 校本教材
      • 2.6.2 论文
    • 2.7 佐证2.课程设计
      • 2.7.1 课程定位
      • 2.7.2 建设方式
    • 2.8 佐证3.更新与共享
      • 2.8.1 吸引力
      • 2.8.2 内容更新
      • 2.8.3 媒体应用
    • 2.9 佐证4.教学团队
      • 2.9.1 负责人
      • 2.9.2 教学队伍
    • 2.10 佐证5.教学资源
      • 2.10.1 基本资源
        • 2.10.1.1 单元设计
        • 2.10.1.2 课件PPT
        • 2.10.1.3 授课视频
      • 2.10.2 拓展资源
      • 2.10.3 资源创新
    • 2.11 佐证6.课程特色
      • 2.11.1 内容
      • 2.11.2 教学组织
      • 2.11.3 教学模式
    • 2.12 佐证7.目标实现
      • 2.12.1 考评
      • 2.12.2 能学
      • 2.12.3 辅教
  • 3 第一章 Spring 简介
    • 3.1 思政教育
    • 3.2 Sring 概述
    • 3.3 Spring 优点
    • 3.4 Spring 框架结构
    • 3.5 Spring 框架特征
    • 3.6 Spring 入门程序
    • 3.7 Spring 依赖注入
    • 3.8 本章小结
    • 3.9 习题1
  • 4 第二章 Spring中bean的配置和实例化
    • 4.1 思政教育
    • 4.2 Spring中bean的配置
    • 4.3 Bean的实例化
    • 4.4 bean的作用域
    • 4.5 Bean的生命周期
    • 4.6 Bean的装配方式
    • 4.7 应用案例:Annotation注解
    • 4.8 本章小结
    • 4.9 习题2
  • 5 第三章  Spring面向切面编程AOP
    • 5.1 Spring  AOP的基本概念
    • 5.2 通知类型介绍
    • 5.3 JDK动态代理
    • 5.4 Spring AOP
    • 5.5 应用案例:AspectJ开发
    • 5.6 本章小结
    • 5.7 习题3
  • 6 第四章  Mybatis原理
    • 6.1 基本内容
    • 6.2 JDBC的问题
    • 6.3 Hibernate的问题
    • 6.4 MyBatis优势
    • 6.5 MyBatis的工作原理
    • 6.6 MyBatis的数据库准备_MySQL
    • 6.7 应用案例:MyBatis入门程序
    • 6.8 Mybatis数据库基本操作示例
    • 6.9 习题4
  • 7 第五章  Mybatis反向工程
    • 7.1 动态SQL
    • 7.2 应用案例: Mybatis反向(逆向)工程
    • 7.3 Mybatis反向(逆向)工程代码解读
    • 7.4 习题5
  • 8 第六章  Spring、 Mybatis Mapper接口编程
    • 8.1 Mybatis反向工程生成的接口
    • 8.2 应用案例:SpringMVC、 Mybatis  Mapper接口编程
    • 8.3 习题6
  • 9 SpringMVC
    • 9.1 SpringMVC框架
    • 9.2 应用案例:SpringMVC
    • 9.3 应用案例:SpringMVC注解开发
    • 9.4 习题7
  • 10 SpringMVC数据绑定
    • 10.1 SpringMvc的数据绑定流程
    • 10.2 应用案例:SpringMVC参数绑定
    • 10.3 SpringMVC参数绑定数组和集合
    • 10.4 案例SpringMVC参数绑定数组
    • 10.5 习题8
  • 11 第九章、SpringMVC拦截器
    • 11.1 拦截器的实现
    • 11.2 拦截器的配置
    • 11.3 应用案例
    • 11.4 习题9
  • 12 第十章 文件上传
    • 12.1 文件上传原理
    • 12.2 创建工程
    • 12.3 应用案例
    • 12.4 习题10
  • 13 第十一章、课程资源管理系统
    • 13.1 系统需求
    • 13.2 开发环境
    • 13.3 数据库设计
    • 13.4 项目程序设计
  • 14 第十二章 职场沟通技能
    • 14.1 职场沟通原则与理念
  • 15 第十三章 如何与上司、同事沟通
    • 15.1 如何与上司、同事沟通
  • 16 第十四章 软件开发团队建设
    • 16.1 企业级应用开发团队组织技巧培训
应用案例: Mybatis反向(逆向)工程


根据我们开发Mybatis程序的经验,我们需要根据数据库中的表设计该表对应的实体类,我们还要设计该的操作的配置文件,那么能不能有一种手段能够帮助我们自动的生成这些文件呢?

Mybatis反向(逆向)工程就可以做到,简单点说,就是通过数据库中的单表,自动生成java代码。Mybatis官方提供了逆向工程,可以针对单表自动生成mybatis代码(mapper.java\mapper.xml\po类)企业中,逆向工程是个很常用的工具,比我们手动创建映射文件的配置信息方便很多

5.1 Mybits反向(逆向)工程

1、下载Mybatis反向(逆向)工程所需要的jar包:mybatis-generator-core-1.3.2.jar,下载Mysql数据库驱动包:mysql-connector-java-5.1.8.jar

2、在Mysql数据库中建数据库如下:

create database school;

use school;

create table student(

  stuid int(32) primary key AUTO_INCREMENT,

  stuname varchar(50),

  stuage int(32)

);

create table stuscore(

  sid int(32) primary key AUTO_INCREMENT,

  stuid int(32),

  score int(32)

);

3、新建工程程序结构如下图:

其中mbgconfig.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="testTables" targetRuntime="MyBatis3">

        <commentGenerator>

            <!-- 是否去除自动生成的注释 true:是 : false:否 -->

            <property name="suppressAllComments" value="true" />

        </commentGenerator>

        <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->

        <jdbcConnection driverClass="com.mysql.jdbc.Driver"

            connectionURL="jdbc:mysql://localhost:3306/school" userId="root"

            password="123456">

        </jdbcConnection>

        <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL

            和 NUMERIC 类型解析为java.math.BigDecimal -->

        <javaTypeResolver>

            <property name="forceBigDecimals" value="false" />

        </javaTypeResolver>

 

        <!-- targetProject:生成PO类的位置 -->

        <javaModelGenerator targetPackage="entity"

            targetProject=".\src">

            <!-- enableSubPackages:是否让schema作为包的后缀 -->

            <property name="enableSubPackages" value="false" />

            <!-- 从数据库返回的值被清理前后的空格 -->

            <property name="trimStrings" value="true" />

        </javaModelGenerator>

        <!-- targetProject:mapper映射文件生成的位置 -->

        <sqlMapGenerator targetPackage="mapper"

            targetProject=".\src">

            <!-- enableSubPackages:是否让schema作为包的后缀 -->

            <property name="enableSubPackages" value="false" />

        </sqlMapGenerator>

        <!-- targetPackage:mapper接口生成的位置 -->

        <javaClientGenerator type="XMLMAPPER"

            targetPackage="mapper" targetProject=".\src">

            <!-- enableSubPackages:是否让schema作为包的后缀 -->

            <property name="enableSubPackages" value="false" />

        </javaClientGenerator>

        <!-- 指定数据库表 -->

        <table tableName="student"></table>

        <table tableName="stuscore"></table>

    </context>

</generatorConfiguration>

在这个配置文件中,我们设定了连接数据库的一系列元素,同时我们也设定了生成的po实体类存放的包和对应的配置文件所存放的包,在文件的最后我们设定了要处理的两个表分别是student和stuscore,当然如果需要对更多的表进行反向工程,请自行添加该表的表名,唯一需要注意的是添加的表名在数据库中是确定存在 的。

4、在Test.java类中编写代码如下:

package reversedb;

import java.io.File;

import java.util.ArrayList;

import java.util.List;

import org.mybatis.generator.api.MyBatisGenerator;

import org.mybatis.generator.config.Configuration;

import org.mybatis.generator.config.xml.ConfigurationParser;

import org.mybatis.generator.internal.DefaultShellCallback;

public class Test {

public static void main(String[] args) {

        List<String> warnings = new ArrayList<String>();

        boolean overwrite = true;

        //如果这里出现空指针,直接写绝对路径即可。

        String genCfg = "D:\\SSM\\tpprj\\reversedb\\src\\mbgconfig.xml";

        File configFile = new File(genCfg);

        ConfigurationParser cp = new ConfigurationParser(warnings);

        Configuration config = null;

        try {

            config = cp.parseConfiguration(configFile);

        } catch (Exception e) {

            e.printStackTrace();

        }

        DefaultShellCallback callback = new DefaultShellCallback(overwrite);

        MyBatisGenerator myBatisGenerator = null;

        try {

            myBatisGenerator = new MyBatisGenerator(config, callback, warnings);

        } catch (Exception e) {

            e.printStackTrace();

        }

        try {

            myBatisGenerator.generate(null);

        } catch (Exception e) {

            e.printStackTrace();

        }

}

}

在这个程序文件中我们唯一需要修改的地方是配置文件的位置,这里我们使用的是绝对地址。

运行程序结果如下图:

由于我们对两个表进行了反向工程,所以生成了两个包entity和mapper,并且在这两个包中生成了8个文件。每个数据库表对应4个文件。其中student表对应的4个文件分别为实体类Student.java文件、用于添加查询条件的StudentExample.java类文件、功能接口文件StudentMapper.java文件和实现接口功能的StudentMapper.xml配置文件。有兴趣的读者可以打开这些文件仔细观察其代码或者自己亲手编写这些代码。

需要注意的是这里的Test.java程序只能执行一次,这个程序唯一的功能就是自动生成这些代码,程序执行完成后Test.java和mbgconfig.xml文件都不在有任何价值。执行多次则会出现冗余的代码。如果因为数据库的更新确实需要重新执行,请删除原来生成的代码文件再重新执行。