MyBatis的逆向工程详细步骤操纵
1. MyBatis的逆向工程详细步骤操纵@
目次
[*]1. MyBatis的逆向工程详细步骤操纵
[*]2. 逆向工程设置与天生
[*]2.1 MyBatis3Simple:底子版,只有基本的增删改查
[*]2.1.1 第一步:在pom.xml 中添加逆向工程插件
[*]2.1.2 第二步:设置 generatorConfig.xml
[*]2.1.3 第三步:运行插件
[*]2.1.4 第四步:测试运行
[*]2.2 MyBatis3:天生的是增强版
[*]3. 总结:
[*]4. 最后:
所谓的逆向工程:会/可以根据数据库表逆向天生Java的 POJO类,SqlMapper.xml (对应SQL映射文件),以及Mapper 接口类等。
思考:使用这个插件的话,需要给这个插件设置哪些信息?
[*]POJO类名,包名以及要天生的地点位置
[*]SqlMapper.xml 文件名以及天生位置
[*]Mapper 接口名以及天生位置
[*]毗连数据库的信息
[*]指定哪些表参与逆向工程
[*]......
关于 MyBatis 的逆向工程有两个版本: 对应在targetRuntime 的两个值:
[*]MyBatis3Simple:天生的是底子版,只有基本的增删改查。
[*]MyBatis3:天生的是增强版,除了基本的增删改查之外还有复杂的增删改查。
https://img2024.cnblogs.com/blog/3084824/202406/3084824-20240615144650661-516454160.png
2. 逆向工程设置与天生
https://img2024.cnblogs.com/blog/3084824/202406/3084824-20240615144650553-1678532666.png
下面我们举行逆向工程设置,让其为我们自动天生va的 POJO类,SqlMapper.xml (对应SQL映射文件),以及Mapper 接口类等。
2.1 MyBatis3Simple:底子版,只有基本的增删改查
2.1.1 第一步:在pom.xml 中添加逆向工程插件
大家直接复制就好了,不消修改的。
<build>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.4.1</version>
<configuration>
<overwrite>true</overwrite>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build> https://img2024.cnblogs.com/blog/3084824/202406/3084824-20240615144650680-911592518.png
https://img2024.cnblogs.com/blog/3084824/202406/3084824-20240615144650683-803760712.png
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.rainbowsea</groupId>
<artifactId>mybatis-012-generator2</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.10</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.11</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.4.1</version>
<configuration>
<overwrite>true</overwrite>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project> 2.1.2 第二步:设置 generatorConfig.xml
注意:该文件必须设置到类的根路径下,并且该文件名必须是为 generatorConfig.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="DB2Tables" targetRuntime="MyBatis3Simple">
<plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin"/>
<commentGenerator>
<property name="suppressDate" value="true"/>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<jdbcConnection driver
connectionURL="jdbc:mysql://localhost:3306/powernode"
userId="root"
password="root">
</jdbcConnection>
<javaModelGenerator targetPackage="com.powernode.mybatis.pojo" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<sqlMapGenerator targetPackage="com.powernode.mybatis.mapper" targetProject="src/main/resources">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<javaClientGenerator
type="xmlMapper"
targetPackage="com.powernode.mybatis.mapper"
targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<table tableName="t_car" domainObjectName="Car"/>
</context>
</generatorConfiguration> https://img2024.cnblogs.com/blog/3084824/202406/3084824-20240615144650625-332439896.png
下面,我们先使用 MyBatis3Simple:天生的是底子版,只有基本的增删改查
https://img2024.cnblogs.com/blog/3084824/202406/3084824-20240615144650610-1756215282.png
注意:需要将其中的一些信息修改为你自己的比如(数据库的账号暗码,以及你所想的包名的路径名称等等)
https://img2024.cnblogs.com/blog/3084824/202406/3084824-20240615144650724-445943238.png
<?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="DB2Tables" targetRuntime="MyBatis3Simple">
<plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin"/>
<commentGenerator>
<property name="suppressDate" value="true"/>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<jdbcConnection driver
connectionURL="jdbc:mysql://localhost:3306/powernode"
userId="root"
password="MySQL123">
</jdbcConnection>
<javaModelGenerator targetPackage="com.rainbowsea.mybatis.pojo" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<sqlMapGenerator targetPackage="com.rainbowsea.mybatis.mapper" targetProject="src/main/resources">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<javaClientGenerator
type="xmlMapper"
targetPackage="com.rainbowsea.mybatis.mapper"
targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<table tableName="t_car" domainObjectName="Car"/>
</context>
</generatorConfiguration> 2.1.3 第三步:运行插件
https://img2024.cnblogs.com/blog/3084824/202406/3084824-20240615144650652-1628828042.png
https://img2024.cnblogs.com/blog/3084824/202406/3084824-20240615144650592-528552141.png
我们可以打开项目看看。
https://img2024.cnblogs.com/blog/3084824/202406/3084824-20240615144650658-423626154.png
https://img2024.cnblogs.com/blog/3084824/202406/3084824-20240615144650682-337546162.png
2.1.4 第四步:测试运行
别忘记了,运行MyBatis 还是需要导入关于 MyBatis 的相关依靠的 jar 包的
[*]依靠:mybatis依靠、mysql驱动依靠、junit依靠、logback依靠
[*]jdbc.properties
[*]mybatis-config.xml
[*]logback.xml
编写测试程序:
https://img2024.cnblogs.com/blog/3084824/202406/3084824-20240615144650574-1577936864.png
https://img2024.cnblogs.com/blog/3084824/202406/3084824-20240615144650708-639116638.png
package com.rainbowsea.mybatis.test;
import com.rainbowsea.mybatis.mapper.CarMapper;
import com.rainbowsea.mybatis.pojo.Car;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.IOException;
public class CarMapperTest {
// CarExample类负责封装查询条件的
@Test
public void testSelect() throws IOException {
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(Resources.getResourceAsStream("mybatis-config.xml"), "mybatis");
SqlSession sqlSession = sqlSessionFactory.openSession();
CarMapper mapper = sqlSession.getMapper(CarMapper.class);
// 执行查询
// 1. 查询一个
Car car = mapper.selectByPrimaryKey(118L);
System.out.println(car);
sqlSession.close();
}
} 2.2 MyBatis3:天生的是增强版
升级为 MyBatis3 增强版,只需要在generatorConfig.xml 设置文件当中的targetRuntime="MyBatis3" 的值,设置为:myBatis3 即可。其它的和上面 MyBatis3Simple 的操纵是一样的。
https://img2024.cnblogs.com/blog/3084824/202406/3084824-20240615144650685-1235189933.png
https://img2024.cnblogs.com/blog/3084824/202406/3084824-20240615144650605-1274924850.png
https://img2024.cnblogs.com/blog/3084824/202406/3084824-20240615144650615-1038086592.png
https://img2024.cnblogs.com/blog/3084824/202406/3084824-20240615144650674-1286257994.png
注意:MyBatis3 增强版,多出来的这个CarExample 实体类对象,是封装了条件,通过CarExample 对象来封装查询条件的
如下运行测试:
https://img2024.cnblogs.com/blog/3084824/202406/3084824-20240615144650563-202236175.png
package com.rainbowsea.mybatis.test;
import com.rainbowsea.mybatis.mapper.CarMapper;
import com.rainbowsea.mybatis.pojo.Car;
import com.rainbowsea.mybatis.pojo.CarExample;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.List;
public class CarMapperTest {
@Test
public void testDeleteByPrimaryKey() throws IOException {
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(Resources.getResourceAsStream("mybatis-config.xml"), "mybatis");
SqlSession sqlSession = sqlSessionFactory.openSession();
CarMapper mapper = sqlSession.getMapper(CarMapper.class);
// 执行查询
// 1. 查询一个
Car car = mapper.selectByPrimaryKey(118L);
System.out.println(car);
// 2. 查询所有(selectByExample 根据条件查询,如果条件是null表示没有条件)
List<Car> cars = mapper.selectByExample(null);
cars.forEach(car1 -> {
System.out.println(car1);
});
// 3. 按照条件进行查询
// 封装条件,通过CarExample 对象来封装查询条件
CarExample carExample = new CarExample();
// 调用carExample.createCriteria()方法来创建查询条件
carExample.createCriteria()
.andBrandLike("小米")
.andGuidePriceGreaterThan(new BigDecimal(30.0));
// 添加 or
carExample.or().andCarTypeEqualTo("燃油车");
// 执行查询
List<Car> cars2 = mapper.selectByExample(carExample);
cars2.forEach(car2->{
System.out.println(car2);
});
sqlSession.close();
}
} https://img2024.cnblogs.com/blog/3084824/202406/3084824-20240615144650616-731802817.png
package com.powernode.mybatis.test;
import com.powernode.mybatis.mapper.CarMapper;
import com.powernode.mybatis.pojo.Car;
import com.powernode.mybatis.pojo.CarExample;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.math.BigDecimal;
import java.util.List;
public class GeneratorTest {
@Test
public void testGenerator() throws Exception{
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
SqlSession sqlSession = sqlSessionFactory.openSession();
CarMapper mapper = sqlSession.getMapper(CarMapper.class);
// 增
/*Car car = new Car();
car.setCarNum("1111");
car.setBrand("比亚迪唐");
car.setGuidePrice(new BigDecimal(30.0));
car.setProduceTime("2010-10-12");
car.setCarType("燃油车");
int count = mapper.insert(car);
System.out.println("插入了几条记录:" + count);*/
// 删
/*int count = mapper.deleteByPrimaryKey(83L);
System.out.println("删除了几条记录:" + count);*/
// 改
// 根据主键修改
/*Car car = new Car();
car.setId(89L);
car.setGuidePrice(new BigDecimal(20.0));
car.setCarType("新能源");
int count = mapper.updateByPrimaryKey(car);
System.out.println("更新了几条记录:" + count);*/
// 根据主键选择性修改
/*car = new Car();
car.setId(89L);
car.setCarNum("3333");
car.setBrand("宝马520Li");
car.setProduceTime("1999-01-10");
count = mapper.updateByPrimaryKeySelective(car);
System.out.println("更新了几条记录:" + count);*/
// 查一个
Car car = mapper.selectByPrimaryKey(89L);
System.out.println(car);
// 查所有
List<Car> cars = mapper.selectByExample(null);
cars.forEach(c -> System.out.println(c));
// 多条件查询
// QBC 风格:Query By Criteria 一种查询方式,比较面向对象,看不到sql语句。
CarExample carExample = new CarExample();
carExample.createCriteria()
.andBrandEqualTo("丰田霸道")
.andGuidePriceGreaterThan(new BigDecimal(60.0));
carExample.or().andProduceTimeBetween("2000-10-11", "2022-10-11");
mapper.selectByExample(carExample);
sqlSession.commit();
}
} 3. 总结:
[*]所谓的逆向工程:会/可以根据数据库表逆向天生Java的 POJO类,SqlMapper.xml (对应SQL映射文件),以及Mapper 接口类等。
[*]关于 MyBatis 的逆向工程有两个版本:对应在targetRuntime 的两个值:
1.MyBatis3Simple:生成的是基础版,只有基本的增删改查。
2.MyBatis3:生成的是增强版,除了基本的增删改查之外还有复杂的增删改查。
[*]注意:MyBatis3 增强版,多出来的这个CarExample 实体类对象,是封装了条件,通过CarExample 对象来封装查询条件的
4. 最后:
“在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和复兴是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。感谢你们,我们总会在某个时候再次相遇。”
https://img2024.cnblogs.com/blog/3084824/202406/3084824-20240615144650789-1606773078.gif
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]