• SSM整合之Mybatis笔记(MyBatis的逆向工程(代码生成器))(P058—P059)


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

    一.清新简洁版

    1.创建模块mybatis_mbg     com.atguigu.mybatis

    2.导入依赖

    jar
     
     
         
             org.mybatis
             mybatis
             3.5.7
         
         
         
             junit
             junit
             4.12
             test
         
         
         
             log4j
             log4j
             1.2.17
         
         
             mysql
             mysql-connector-java
             8.0.16
         
     
     
     
     
     
         
         
             org.mybatis.generator
             mybatis-generator-maven-plugin
             1.3.0
             
             
                 
                 
                     org.mybatis.generator
                     mybatis-generator-core
                     1.3.2
                 
                 
                 
                     mysql
                     mysql-connector-java
                     8.0.16
                 
             
         
     
     

    3 .创建MyBatis的核心配置文件

     

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

    4. 创建逆向工程的配置文件

    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=" MyBatis3Simple">
    7. <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
    8. connectionURL="jdbc:mysql://localhost:3306/ssm?serverTimezone=UTC"
    9. userId="root"
    10. password="123456">
    11. jdbcConnection>
    12. <javaModelGenerator targetPackage="com.atguigu.mybatis.pojo" targetProject=".\src\main\java">
    13. <property name="enableSubPackages" value="true" />
    14. <property name="trimStrings" value="true" />
    15. javaModelGenerator>
    16. <sqlMapGenerator targetPackage="com.atguigu.mybatis.mapper" targetProject=".\src\main\resources">
    17. <property name="enableSubPackages" value="true" />
    18. sqlMapGenerator>
    19. <javaClientGenerator type="XMLMAPPER" targetPackage="com.atguigu.mybatis.mapper" targetProject=".\src\main\java">
    20. <property name="enableSubPackages" value="true" />
    21. javaClientGenerator>
    22. <table tableName="t_emp" domainObjectName="Emp"/>
    23. <table tableName="t_dept" domainObjectName="Dept"/>
    24. context>
    25. generatorConfiguration>

    测试结果:

     

    5 . 把log4j.xml /jdbc.properties 和工具类utils/ SqlSessionUtil复制过来

    二 . 奢华尊享版

    1 .删除上一个版本主动生成的一些文件 

     

    2  生成:

     3 .测试

    3.1 根据id查询数据

    1. @Test
    2. public void testMBG(){
    3. SqlSession sqlSession = SqlSessionUtil.getSqlSession();
    4. EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
    5. //根据id查询数据
    6. Emp emp = mapper.selectByPrimaryKey(1);
    7. System.out.println(emp);
    8. }

    在这里面生成的是一个内存地址   因为自动生成的Emp实体类   没有tostring方法

    添加tostring

    在这里的id为null  视频正常

     视频的结果:

    3.2 查询所有数据

    1. @Test
    2. public void testMBG(){
    3. SqlSession sqlSession = SqlSessionUtil.getSqlSession();
    4. EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
    5. //查询所有数据
    6. List list = mapper.selectByExample(null);
    7. list.forEach(System.out::println);

    我自己查的

     老师查的

    3.3 根据条件查询数据

    1. //根据条件查询数据
    2. EmpExample example = new EmpExample();
    3. example.createCriteria().andEmpNameEqualTo("张三");
    4. List list = mapper.selectByExample(example);
    5. list.forEach(System.out::println);

     自己查:

    老师查:

     

     

    1. @Testj
    2. public void testMBG(){
    3. SqlSession sqlSession = SqlSessionUtil.getSqlSession();
    4. EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
    5. //根据id查询数据
    6. /*Emp emp = mapper.selectByPrimaryKey(1);
    7. System.out.println(emp);*/
    8. //查询所有数据
    9. /*List list = mapper.selectByExample(null);
    10. list.forEach(System.out::println);*/
    11. //根据条件查询数据
    12. EmpExample example = new EmpExample();
    13. example.createCriteria().andEmpNameEqualTo("张三").andAgeGreaterThanOrEqualTo(20);
    14. List list = mapper.selectByExample(example);
    15. list.forEach(System.out::println);
    16. }
    自己查

     老师查

     

    1. @Test
    2. public void testMBG(){
    3. SqlSession sqlSession = SqlSessionUtil.getSqlSession();
    4. EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
    5. //根据id查询数据
    6. /*Emp emp = mapper.selectByPrimaryKey(1);
    7. System.out.println(emp);*/
    8. //查询所有数据
    9. /*List list = mapper.selectByExample(null);
    10. list.forEach(System.out::println);*/
    11. //根据条件查询数据
    12. EmpExample example = new EmpExample();
    13. example.createCriteria().andEmpNameEqualTo("张三").andAgeGreaterThanOrEqualTo(20);
    14. example.or().andGenderEqualTo("男");
    15. List list = mapper.selectByExample(example);
    16. list.forEach(System.out::println);
    自己查

    老师查

    3.4 测试普通修改功能

    测试

    1. //测试普通修改功能
    2. Emp emp = new Emp(1, "小黑", null, "女");
    3. mapper.updateByPrimaryKey(emp);

    3.5  测试选择性修改

    我们把它改成回来

     

    1. Emp emp = new Emp(1, "小黑", null, "女");
    2. //测试普通修改功能
    3. //mapper.updateByPrimaryKey(emp);
    4. //测试选择性修改
    5. mapper.updateByPrimaryKeySelective(emp);

     

     补充:

    在Emp里面添加有参构造

     

     在创建一个无参构造

     

     

     

     

  • 相关阅读:
    【译】在 Visual Studio 中处理图像变得更容易了
    EtherCAT主站SDO读报文抓包分析
    华纳云:SQL Server怎么批量导入和导出数据
    微信小程序使用CryptoJS加密PassWord(MD5)
    Qt 自定义长条进度条(类似播放器进度条)
    Java 数据结构与算法之树(BST)
    RuntimeError: CUDA unknown error #49081
    【花雕动手做】有趣好玩的音乐可视化系列小项目(17)--光导纤维灯
    [附源码]SSM计算机毕业设计校园兼职招聘系统JAVA
    极智AI | TensorRT Parser 构建模型推理方法
  • 原文地址:https://blog.csdn.net/m0_59281987/article/details/127543733