MyBatis逆向工程

一、什么是逆向工程

我们在使用mybatis时需要根据数据表创建pojo类,pojo类的映射文件以及sql语句和Dao层,而这些部分没有什么技术含量,myBatis官方提供了逆向功能,可以根据数据表自动生成pojo,映射文件以及dao层。我们通常将Dao层称为mapper.java,将映射文件称为mapper.xml,将会实体类称为pojo。

二、下载逆向工程

我们使用mybatis需要导入mybatis的jar包,如果使用逆向工程还需要逆向工程的jar包 mybatis-generator-core-1.3.7.jar

逆向工程jar包下载地址大家也可以maven官网仓库maven官网搜索mybatis-generator-core进行下载,推荐大家到maven上下载,能够省点积分 #滑稽。

 

三、使用

3.1 新建工程

这里我们新建一个普通的java工程完成我们的逆向工程,为什么新建一个工程来写,不直接在项目中生成呢?因为mybatis的逆向工程是根据配置文件来生成的,如果生成的路径中有相同的文件会被覆盖,存在风险,所以我们创建一个新的工程专门用来生成文件,将生成的文件复制到我们的项目中即可。创建项目的图就不放到这里了。

3.2 导入jar包

我这里使用的是mysql数据库,所以导入以下几个jar包和日志文件

项目结构如下

MyBatis逆向工程_第1张图片

3.3 逆向工程配置文件

在项目根目录下创建逆向工程配置文件,文件名为generatorConfig.xml,文件内容贴出,讲解都在注释中,请仔细看注释,很简单



  

	
		
			
			
		
		
		
		
		
		
			
		

		
		
			
			
			
			
		
        
		
			
			
		
		
		
			
			
		
		
		

从上面的配置文件中可以看出,配置文件主要做的几件事是:

  1. 连接数据库,这是必须的,要不然怎么根据数据库的表生成代码呢?
  2. 指定要生成代码的位置,要生成的代码包括pojo类,mapper.xml和mapper.java
  3. 指定数据库中想要生成哪些表

3.4 执行逆向工程生成代码

配置文件搞好了,接下来执行程序就可以生成代码,在src下创建类,代码如下,本来想偷个懒不写包名,不符合我的风格。

package com.stt.generator;

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 GeneratorSqlmap {

	public void generator() throws Exception {

		List warnings = new ArrayList();
		boolean overwrite = true;
		// 指定 逆向工程配置文件
		File configFile = new File("generatorConfig.xml");
		ConfigurationParser cp = new ConfigurationParser(warnings);
		Configuration config = cp.parseConfiguration(configFile);
		DefaultShellCallback callback = new DefaultShellCallback(overwrite);
		MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
		myBatisGenerator.generate(null);

	}

	public static void main(String[] args) throws Exception {
		try {
			GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap();
			generatorSqlmap.generator();
		} catch (Exception e) {
			e.printStackTrace();
		}

	}
}

我们运行之前项目结构如下

 

MyBatis逆向工程_第2张图片

项目运行后,就会生成我们的pojo,mapper.java和mapper.xml,刷新我们的工程就会看到

MyBatis逆向工程_第3张图片

这里可以看出有个细节,每个pojo多了一个东西,就是xxxExample.java,这个类是给用户自定义sql使用的,后面我会提到。到这里就生成好了,下面我们就把生成的代码拷贝到自己的工程使用了,下边我们测试一下吧。

四、测试

我们创建一个spring和mybatis的整合项目,我们不写页面所以还是创建一个普通的java项目即可,没必要创建动态web项目,而且我们要使用mpper.java中的方法操作数据库,因为它是一个接口,所以不能使用new创建对象,我们需要使用它的代理对象,我们可以使用spring容器帮我们创建它的代理对象,何乐而不为。

我们将逆向工程生成的代码复制到项目中

MyBatis逆向工程_第4张图片

接下来我们完成配置一下spring与myabtis的配置文件与之前我们说的ssm整合一样。



      
      
		
	
	
		
		
		
		
	

	
	
		
		
		
	
         
      
      	
      
         

测试类

public class MyTest {

	private ApplicationContext context;
	
	@Before
	public void init() {
		//初始化spring容器
		context = new ClassPathXmlApplicationContext("spring-mybatis.xml");
	}
	//添加商品
	@Test
	public void insertGoods() {
		//获取goodsMapper对象
		TbGoodsMapper goodsMapper = context.getBean(TbGoodsMapper.class);
		TbGoods tbGoods = new TbGoods();
		tbGoods.setGoodsName("三体1:地球往事");
		tbGoods.setGoodsType("科幻小说");
		tbGoods.setGoodsCount(1000);
		tbGoods.setGoodsPrice(23.00);
		tbGoods.setGoodsStatus(1);//数据的状态,1:可用,0:为不可用
		goodsMapper.insert(tbGoods);
	}
	//查询
	@Test
	public void selectByExample() {
		TbGoodsMapper goodsMapper = context.getBean(TbGoodsMapper.class);
		TbGoodsExample goodsExample = new TbGoodsExample();
		//Criteria类是UserExample类里面的内部类,Criteria类是干什么用的呢?它专门用于封装自定义查询条件的
		//Criteria criteria = goodsExample.createCriteria();
        //criteria.andGoodsNameLike("%小%");
		//执行查询
		List list = goodsMapper.selectByExample(goodsExample);
		for (TbGoods tbGoods : list) {
			System.out.println(tbGoods);
		}
	}
	//根据id查询
	@Test
	public void selectByPrimaryId() {
		TbGoodsMapper goodsMapper = context.getBean(TbGoodsMapper.class);
		TbGoods goods = goodsMapper.selectByPrimaryKey(5);
		System.out.println(goods);
	}
	//修改和删除读者自己完成
	
	
}

以上就是我们逆向工程的配置和使用,新建一个工程用来生成我们的文件再将生成的文件复制到我们的项目中使用,框架的整合还和以前的一样,只不过原先需要我们自己写pojo类,mapper.xml,mapper.java现在可以自动生成。使用起来很方便,而且比较规范,而且还多了自定义查询条件的java类。

逆向工程下载地址:https://gitee.com/stt0626/mybatis-generator.git

测试项目下载地址:https://gitee.com/stt0626/test-generator.git

 

盛年不复来,一日难再晨。

你可能感兴趣的:(Java技术)