• 【SSM框架】MyBatis的逆向工程


    🍓个人主页:个人主页

    🍒系列专栏:SSM框架

    目录

    创建逆向工程的步骤

    ①创建表

    ②添加依赖和插件

    ③创建MyBatis的核心配置文件

    ④创建逆向工程的配置文件

    ⑤创建log4j.xml配置文件

    ⑥执行MBG插件的generate目标

     ⑦添加 SqlSessionUtils 工具类

    ⑧测试功能


    正向工程:
    • 先创建Java实体类,由框架负责根据实体类生成数据库表。 Hibernate是支持正向工程的。
    逆向工程:先创建数据库表,由框架负责根据数据库表,反向生成如下资源:
    • Java实体类
    • Mapper接口
    • Mapper映射文件

    创建逆向工程的步骤

    ①创建表

    在ssm数据库下 创建2张表(t_emp   t_dept)

     t_emp  设置如下字段,并添加一部分数据

    t_dept  设置如下字段,并添加一部分数据

    ②添加依赖和插件

    • 新建一个项目

     

     

     下面代码复制到pom.xml中

    1. "1.0" encoding="UTF-8"?>
    2. <project xmlns="http://maven.apache.org/POM/4.0.0"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    5. <modelVersion>4.0.0modelVersion>
    6. <groupId>org.examplegroupId>
    7. <artifactId>mybatis_bmgartifactId>
    8. <version>1.0-SNAPSHOTversion>
    9. <dependencies>
    10. <dependency>
    11. <groupId>org.mybatisgroupId>
    12. <artifactId>mybatisartifactId>
    13. <version>3.5.7version>
    14. dependency>
    15. <dependency>
    16. <groupId>junitgroupId>
    17. <artifactId>junitartifactId>
    18. <version>4.12version>
    19. <scope>testscope>
    20. dependency>
    21. <dependency>
    22. <groupId>log4jgroupId>
    23. <artifactId>log4jartifactId>
    24. <version>1.2.17version>
    25. dependency>
    26. <dependency>
    27. <groupId>mysqlgroupId>
    28. <artifactId>mysql-connector-javaartifactId>
    29. <version>5.1.3version>
    30. dependency>
    31. <dependency>
    32. <groupId>org.junit.jupitergroupId>
    33. <artifactId>junit-jupiterartifactId>
    34. <version>RELEASEversion>
    35. <scope>compilescope>
    36. dependency>
    37. dependencies>
    38. <build>
    39. <plugins>
    40. <plugin>
    41. <groupId>org.mybatis.generatorgroupId>
    42. <artifactId>mybatis-generator-maven-pluginartifactId>
    43. <version>1.3.0version>
    44. <dependencies>
    45. <dependency>
    46. <groupId>org.mybatis.generatorgroupId>
    47. <artifactId>mybatis-generator-coreartifactId>
    48. <version>1.3.2version>
    49. dependency>
    50. <dependency>
    51. <groupId>mysqlgroupId>
    52. <artifactId>mysql-connector-javaartifactId>
    53. <version>8.0.16version>
    54. dependency>
    55. dependencies>
    56. plugin>
    57. plugins>
    58. build>
    59. project>

    ③创建MyBatis的核心配置文件

    这里的数据库账号密码改成自己的:

    1. "1.0" encoding="UTF-8" ?>
    2. configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
    3. <configuration>
    4. <settings>
    5. <setting name="mapUnderscoreToCamelCase" value="true"/>
    6. <setting name="lazyLoadingEnabled" value="true"/>
    7. <setting name="aggressiveLazyLoading" value="false"/>
    8. settings>
    9. <typeAliases>
    10. <package name="com.atguigu.mybatis.pojo"/>
    11. typeAliases>
    12. <environments default="development">
    13. <environment id="development">
    14. <transactionManager type="JDBC"/>
    15. <dataSource type="POOLED">
    16. <property name="driver" value="com.mysql.jdbc.Driver"/>
    17. <property name="url" value="jdbc:mysql://localhost:3306/ssm? serverTimezone=UTC"/>
    18. <property name="username" value="root"/>
    19. <property name="password" value="root"/>
    20. dataSource>
    21. environment>
    22. environments>
    23. <mappers>
    24. <package name="com.atguigu.mybatis.mapper"/>
    25. mappers>
    26. configuration>

    ④创建逆向工程的配置文件

    文件名必须是:generatorConfig.xml  

    1. "1.0" encoding="UTF-8"?>
    2. generatorConfiguration
    3. PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
    4. "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
    5. <generatorConfiguration>
    6. <context id="DB2Tables" targetRuntime="MyBatis3">
    7. <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
    8. connectionURL="jdbc:mysql://localhost:3306/ssm?
    9. serverTimezone=UTC"
    10. userId="root"
    11. password="root">
    12. jdbcConnection>
    13. <javaModelGenerator targetPackage="com.atguigu.mybatis.pojo"
    14. targetProject=".\src\main\java">
    15. <property name="enableSubPackages" value="true" />
    16. <property name="trimStrings" value="true" />
    17. javaModelGenerator>
    18. <sqlMapGenerator targetPackage="com.atguigu.mybatis.mapper"
    19. targetProject=".\src\main\resources">
    20. <property name="enableSubPackages" value="true" />
    21. sqlMapGenerator>
    22. <javaClientGenerator type="XMLMAPPER"
    23. targetPackage="com.atguigu.mybatis.mapper" targetProject=".\src\main\java">
    24. <property name="enableSubPackages" value="true" />
    25. javaClientGenerator>
    26. <table tableName="t_emp" domainObjectName="Emp"/>
    27. <table tableName="t_dept" domainObjectName="Dept"/>
    28. context>
    29. generatorConfiguration>

    ⑤创建log4j.xml配置文件

    1. "1.0" encoding="UTF-8"?>
    2. generatorConfiguration
    3. PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
    4. "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
    5. <generatorConfiguration>
    6. <context id="DB2Tables" targetRuntime="MyBatis3">
    7. <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
    8. connectionURL="jdbc:mysql://localhost:3306/ssm?
    9. serverTimezone=UTC"
    10. userId="root"
    11. password="root">
    12. jdbcConnection>
    13. <javaModelGenerator targetPackage="com.atguigu.mybatis.pojo"
    14. targetProject=".\src\main\java">
    15. <property name="enableSubPackages" value="true" />
    16. <property name="trimStrings" value="true" />
    17. javaModelGenerator>
    18. <sqlMapGenerator targetPackage="com.atguigu.mybatis.mapper"
    19. targetProject=".\src\main\resources">
    20. <property name="enableSubPackages" value="true" />
    21. sqlMapGenerator>
    22. <javaClientGenerator type="XMLMAPPER"
    23. targetPackage="com.atguigu.mybatis.mapper" targetProject=".\src\main\java">
    24. <property name="enableSubPackages" value="true" />
    25. javaClientGenerator>
    26. <table tableName="t_emp" domainObjectName="Emp"/>
    27. <table tableName="t_dept" domainObjectName="Dept"/>
    28. context>
    29. generatorConfiguration>

    执行MBG插件的generate目标

    未执行前:

    点击执行插件

    执行后: 

     ⑦添加 SqlSessionUtils 工具类

     

    1. package com.atguigu.mybatis.utils;
    2. import org.apache.ibatis.io.Resources;
    3. import org.apache.ibatis.session.SqlSession;
    4. import org.apache.ibatis.session.SqlSessionFactory;
    5. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    6. import java.io.IOException;
    7. import java.io.InputStream;
    8. public class SqlSessionUtils {
    9. public SqlSession getSqlSession() {
    10. SqlSession sqlSession = null;
    11. {
    12. try {
    13. InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
    14. SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
    15. SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
    16. sqlSession = sqlSessionFactory.openSession(true);
    17. } catch (IOException e) {
    18. e.printStackTrace();
    19. }
    20. }
    21. return sqlSession;
    22. }
    23. }

    ⑧测试功能

    1. import com.atguigu.mybatis.mapper.EmpMapper;
    2. import com.atguigu.mybatis.pojo.Emp;
    3. import com.atguigu.mybatis.pojo.EmpExample;
    4. import com.atguigu.mybatis.utils.SqlSessionUtils;
    5. import org.apache.ibatis.session.SqlSession;
    6. import java.util.List;
    7. public class Test {
    8. @org.junit.Test
    9. public void test(){
    10. SqlSessionUtils sqlSessionUtils1 = new SqlSessionUtils();
    11. SqlSession sqlSession1 = sqlSessionUtils1.getSqlSession();
    12. EmpMapper mapper = sqlSession1.getMapper(EmpMapper.class);
    13. EmpExample empExample = new EmpExample();
    14. empExample.createCriteria().andEmpNameEqualTo("李四");
    15. List emps = mapper.selectByExample(empExample);
    16. System.out.println(emps);
    17. }
    18. }

     上面图片  查询时 显示的是地址,我们可以加一个toString方法

     

  • 相关阅读:
    C语言 深度探究C语言中的数组
    Redis五中数据类型——Redis
    【0129】Latch机制是pselect()的一种实现
    HTTPS协议和SOCKS5协议的区别
    Pandas数据库大揭秘:read_sql、to_sql 参数详解与实战篇【第81篇—Pandas数据库】
    springMvc48-返回json数据
    SpringBoot整合Redis
    单链表经典OJ题:反转链表
    量化投资学习——股票分红对期指的影响
    Redisson 集成SpringBoot 详解
  • 原文地址:https://blog.csdn.net/Javascript_tsj/article/details/127817727