ToB企服应用市场:ToB评测及商务社交产业平台

标题: MyBatis的逆向工程详细步骤操纵 [打印本页]

作者: 反转基因福娃    时间: 2024-6-15 13:54
标题: MyBatis的逆向工程详细步骤操纵
1. MyBatis的逆向工程详细步骤操纵

@
目次

  所谓的逆向工程:会/可以根据数据库表逆向天生Java的 POJO类,SqlMapper.xml (对应SQL映射文件),以及Mapper 接口类等。
思考:使用这个插件的话,需要给这个插件设置哪些信息?

关于 MyBatis 的逆向工程有两个版本: 对应在  targetRuntime 的两个值:

2. 逆向工程设置与天生


下面我们举行逆向工程设置,让其为我们自动天生va的 POJO类,SqlMapper.xml (对应SQL映射文件),以及Mapper 接口类等。
2.1 MyBatis3Simple:底子版,只有基本的增删改查

2.1.1 第一步:在pom.xml 中添加逆向工程插件

大家直接复制就好了,不消修改的。
  1. <build>
  2.   
  3.   <plugins>
  4.    
  5.     <plugin>
  6.       
  7.       <groupId>org.mybatis.generator</groupId>
  8.       <artifactId>mybatis-generator-maven-plugin</artifactId>
  9.       <version>1.4.1</version>
  10.       
  11.       <configuration>
  12.         <overwrite>true</overwrite>
  13.       </configuration>
  14.       
  15.       <dependencies>
  16.         
  17.         <dependency>
  18.           <groupId>mysql</groupId>
  19.           <artifactId>mysql-connector-java</artifactId>
  20.           <version>8.0.30</version>
  21.         </dependency>
  22.       </dependencies>
  23.     </plugin>
  24.   </plugins>
  25. </build>
复制代码


  1. <?xml version="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.0</modelVersion>
  6.     <groupId>com.rainbowsea</groupId>
  7.     <artifactId>mybatis-012-generator2</artifactId>
  8.     <version>1.0-SNAPSHOT</version>
  9.     <properties>
  10.         <maven.compiler.source>17</maven.compiler.source>
  11.         <maven.compiler.target>17</maven.compiler.target>
  12.     </properties>
  13.     <dependencies>
  14.         
  15.         <dependency>
  16.             <groupId>org.mybatis</groupId>
  17.             <artifactId>mybatis</artifactId>
  18.             <version>3.5.10</version>
  19.         </dependency>
  20.         
  21.         <dependency>
  22.             <groupId>mysql</groupId>
  23.             <artifactId>mysql-connector-java</artifactId>
  24.             <version>8.0.30</version>
  25.         </dependency>
  26.         <dependency>
  27.             <groupId>junit</groupId>
  28.             <artifactId>junit</artifactId>
  29.             <version>4.13.2</version>
  30.             <scope>test</scope>
  31.         </dependency>
  32.         
  33.         <dependency>
  34.             <groupId>ch.qos.logback</groupId>
  35.             <artifactId>logback-classic</artifactId>
  36.             <version>1.2.11</version>
  37.         </dependency>
  38.     </dependencies>
  39.    
  40.     <build>
  41.         
  42.         <plugins>
  43.             
  44.             <plugin>
  45.                
  46.                 <groupId>org.mybatis.generator</groupId>
  47.                 <artifactId>mybatis-generator-maven-plugin</artifactId>
  48.                 <version>1.4.1</version>
  49.                
  50.                 <configuration>
  51.                     <overwrite>true</overwrite>
  52.                 </configuration>
  53.                
  54.                 <dependencies>
  55.                     
  56.                     <dependency>
  57.                         <groupId>mysql</groupId>
  58.                         <artifactId>mysql-connector-java</artifactId>
  59.                         <version>8.0.30</version>
  60.                     </dependency>
  61.                 </dependencies>
  62.             </plugin>
  63.         </plugins>
  64.     </build>
  65. </project>
复制代码
2.1.2 第二步:设置 generatorConfig.xml

注意:该文件必须设置到类的根路径下,并且该文件名必须是为 generatorConfig.xml 不可以是其它的。
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE 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.    
  7.     <context id="DB2Tables" targetRuntime="MyBatis3Simple">
  8.         
  9.         <plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin"/>
  10.       
  11.         <commentGenerator>
  12.             
  13.             <property name="suppressDate" value="true"/>
  14.             
  15.             <property name="suppressAllComments" value="true"/>
  16.         </commentGenerator>
  17.         
  18.         <jdbcConnection driver
  19.                         connectionURL="jdbc:mysql://localhost:3306/powernode"
  20.                         userId="root"
  21.                         password="root">
  22.         </jdbcConnection>
  23.         
  24.         <javaModelGenerator targetPackage="com.powernode.mybatis.pojo" targetProject="src/main/java">
  25.             
  26.             <property name="enableSubPackages" value="true"/>
  27.             
  28.             <property name="trimStrings" value="true"/>
  29.         </javaModelGenerator>
  30.         
  31.         <sqlMapGenerator targetPackage="com.powernode.mybatis.mapper" targetProject="src/main/resources">
  32.             
  33.             <property name="enableSubPackages" value="true"/>
  34.         </sqlMapGenerator>
  35.         
  36.         <javaClientGenerator
  37.                 type="xmlMapper"
  38.                 targetPackage="com.powernode.mybatis.mapper"
  39.                 targetProject="src/main/java">
  40.             <property name="enableSubPackages" value="true"/>
  41.         </javaClientGenerator>
  42.         
  43.         <table tableName="t_car" domainObjectName="Car"/>
  44.     </context>
  45. </generatorConfiguration>
复制代码

下面,我们先使用 MyBatis3Simple:天生的是底子版,只有基本的增删改查

注意:需要将其中的一些信息修改为你自己的比如(数据库的账号暗码,以及你所想的包名的路径名称等等)

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE 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.    
  7.     <context id="DB2Tables" targetRuntime="MyBatis3Simple">
  8.         
  9.         <plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin"/>
  10.         <commentGenerator>
  11.             
  12.             <property name="suppressDate" value="true"/>
  13.             
  14.             <property name="suppressAllComments" value="true"/>
  15.         </commentGenerator>
  16.         
  17.         <jdbcConnection driver
  18.                         connectionURL="jdbc:mysql://localhost:3306/powernode"
  19.                         userId="root"
  20.                         password="MySQL123">
  21.         </jdbcConnection>
  22.         
  23.         <javaModelGenerator targetPackage="com.rainbowsea.mybatis.pojo" targetProject="src/main/java">
  24.             
  25.             <property name="enableSubPackages" value="true"/>
  26.             
  27.             <property name="trimStrings" value="true"/>
  28.         </javaModelGenerator>
  29.         
  30.         <sqlMapGenerator targetPackage="com.rainbowsea.mybatis.mapper" targetProject="src/main/resources">
  31.             
  32.             <property name="enableSubPackages" value="true"/>
  33.         </sqlMapGenerator>
  34.         
  35.         <javaClientGenerator
  36.                 type="xmlMapper"
  37.                 targetPackage="com.rainbowsea.mybatis.mapper"
  38.                 targetProject="src/main/java">
  39.             <property name="enableSubPackages" value="true"/>
  40.         </javaClientGenerator>
  41.         
  42.         <table tableName="t_car" domainObjectName="Car"/>
  43.     </context>
  44. </generatorConfiguration>
复制代码
2.1.3 第三步:运行插件



我们可以打开项目看看。


2.1.4 第四步:测试运行

别忘记了,运行MyBatis 还是需要导入关于 MyBatis 的相关依靠的 jar 包的

编写测试程序:


  1. package com.rainbowsea.mybatis.test;
  2. import com.rainbowsea.mybatis.mapper.CarMapper;
  3. import com.rainbowsea.mybatis.pojo.Car;
  4. import org.apache.ibatis.io.Resources;
  5. import org.apache.ibatis.session.SqlSession;
  6. import org.apache.ibatis.session.SqlSessionFactory;
  7. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  8. import org.junit.Test;
  9. import java.io.IOException;
  10. public class CarMapperTest {
  11.     // CarExample类负责封装查询条件的
  12.     @Test
  13.     public void testSelect() throws IOException {
  14.         SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
  15.         SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(Resources.getResourceAsStream("mybatis-config.xml"), "mybatis");
  16.         SqlSession sqlSession = sqlSessionFactory.openSession();
  17.         CarMapper mapper = sqlSession.getMapper(CarMapper.class);
  18.         // 执行查询
  19.         // 1. 查询一个
  20.         Car car = mapper.selectByPrimaryKey(118L);
  21.         System.out.println(car);
  22.         sqlSession.close();
  23.     }
  24. }
复制代码
2.2 MyBatis3:天生的是增强版

升级为 MyBatis3 增强版,只需要在  generatorConfig.xml 设置文件当中的targetRuntime="MyBatis3" 的值,设置为:myBatis3 即可。其它的和上面 MyBatis3Simple 的操纵是一样的。




注意:MyBatis3 增强版,多出来的这个  CarExample 实体类对象,是封装了条件,通过CarExample 对象来封装查询条件的
如下运行测试:

  1. package com.rainbowsea.mybatis.test;
  2. import com.rainbowsea.mybatis.mapper.CarMapper;
  3. import com.rainbowsea.mybatis.pojo.Car;
  4. import com.rainbowsea.mybatis.pojo.CarExample;
  5. import org.apache.ibatis.io.Resources;
  6. import org.apache.ibatis.session.SqlSession;
  7. import org.apache.ibatis.session.SqlSessionFactory;
  8. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  9. import org.junit.Test;
  10. import java.io.IOException;
  11. import java.math.BigDecimal;
  12. import java.util.List;
  13. public class CarMapperTest {
  14.     @Test
  15.     public void testDeleteByPrimaryKey() throws IOException {
  16.         SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
  17.         SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(Resources.getResourceAsStream("mybatis-config.xml"), "mybatis");
  18.         SqlSession sqlSession = sqlSessionFactory.openSession();
  19.         CarMapper mapper = sqlSession.getMapper(CarMapper.class);
  20.         // 执行查询
  21.         // 1. 查询一个
  22.         Car car = mapper.selectByPrimaryKey(118L);
  23.         System.out.println(car);
  24.         // 2. 查询所有(selectByExample 根据条件查询,如果条件是null表示没有条件)
  25.         List<Car> cars = mapper.selectByExample(null);
  26.         cars.forEach(car1 -> {
  27.             System.out.println(car1);
  28.         });
  29.         // 3. 按照条件进行查询
  30.         // 封装条件,通过CarExample 对象来封装查询条件
  31.         CarExample carExample = new CarExample();
  32.         // 调用carExample.createCriteria()方法来创建查询条件
  33.         carExample.createCriteria()
  34.                 .andBrandLike("小米")
  35.                 .andGuidePriceGreaterThan(new BigDecimal(30.0));
  36.         // 添加 or
  37.         carExample.or().andCarTypeEqualTo("燃油车");
  38.         // 执行查询
  39.         List<Car> cars2 = mapper.selectByExample(carExample);
  40.         cars2.forEach(car2->{
  41.             System.out.println(car2);
  42.         });
  43.         sqlSession.close();
  44.     }
  45. }
复制代码

  1. package com.powernode.mybatis.test;
  2. import com.powernode.mybatis.mapper.CarMapper;
  3. import com.powernode.mybatis.pojo.Car;
  4. import com.powernode.mybatis.pojo.CarExample;
  5. import org.apache.ibatis.io.Resources;
  6. import org.apache.ibatis.session.SqlSession;
  7. import org.apache.ibatis.session.SqlSessionFactory;
  8. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  9. import org.junit.Test;
  10. import java.math.BigDecimal;
  11. import java.util.List;
  12. public class GeneratorTest {
  13.     @Test
  14.     public void testGenerator() throws Exception{
  15.         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
  16.         SqlSession sqlSession = sqlSessionFactory.openSession();
  17.         CarMapper mapper = sqlSession.getMapper(CarMapper.class);
  18.         // 增
  19.         /*Car car = new Car();
  20.         car.setCarNum("1111");
  21.         car.setBrand("比亚迪唐");
  22.         car.setGuidePrice(new BigDecimal(30.0));
  23.         car.setProduceTime("2010-10-12");
  24.         car.setCarType("燃油车");
  25.         int count = mapper.insert(car);
  26.         System.out.println("插入了几条记录:" + count);*/
  27.         // 删
  28.         /*int count = mapper.deleteByPrimaryKey(83L);
  29.         System.out.println("删除了几条记录:" + count);*/
  30.         // 改
  31.         // 根据主键修改
  32.         /*Car car = new Car();
  33.         car.setId(89L);
  34.         car.setGuidePrice(new BigDecimal(20.0));
  35.         car.setCarType("新能源");
  36.         int count = mapper.updateByPrimaryKey(car);
  37.         System.out.println("更新了几条记录:" + count);*/
  38.         // 根据主键选择性修改
  39.         /*car = new Car();
  40.         car.setId(89L);
  41.         car.setCarNum("3333");
  42.         car.setBrand("宝马520Li");
  43.         car.setProduceTime("1999-01-10");
  44.         count = mapper.updateByPrimaryKeySelective(car);
  45.         System.out.println("更新了几条记录:" + count);*/
  46.         // 查一个
  47.         Car car = mapper.selectByPrimaryKey(89L);
  48.         System.out.println(car);
  49.         // 查所有
  50.         List<Car> cars = mapper.selectByExample(null);
  51.         cars.forEach(c -> System.out.println(c));
  52.         // 多条件查询
  53.         // QBC 风格:Query By Criteria 一种查询方式,比较面向对象,看不到sql语句。
  54.         CarExample carExample = new CarExample();
  55.         carExample.createCriteria()
  56.                 .andBrandEqualTo("丰田霸道")
  57.                 .andGuidePriceGreaterThan(new BigDecimal(60.0));
  58.         carExample.or().andProduceTimeBetween("2000-10-11", "2022-10-11");
  59.         mapper.selectByExample(carExample);
  60.         sqlSession.commit();
  61.     }
  62. }
复制代码
3. 总结:

  1. 1.  MyBatis3Simple:生成的是基础版,只有基本的增删改查。
  2. 2.  MyBatis3:生成的是增强版,除了基本的增删改查之外还有复杂的增删改查。
复制代码
4. 最后:

“在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和复兴是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。感谢你们,我们总会在某个时候再次相遇。”


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!  更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4