【Spring Boot 24】MyBatis逆向工程(Example + Criteria简介)

mybatis需要编写sql语句,mybatis官方提供提箱工程,可以针对单表自动生成mybatis执行所需要的代码(诸如bean、dao、mapper),提高工作效率,尤其是在需要大量表进行单表查询的时候,效率极高,快速搭建项目框架的福音。

一、Example + Criteria简介

Example类指定如何构建一个动态的where子句,表中的每个non-BLOB列可以被包括在where子句中。

Example类可以用来生成一个几乎无限的where子句。

Example类包含一个内部静态类 Criteria 包含一个用 anded 组合在where子句中的条件列表。Example类包含一个 List 属性,所有内部类Criteria中的子句会用 ored组合在一起,使用不同属性的 Criteria 类允许您生成无限类型的where子句.。

【Spring Boot 24】MyBatis逆向工程(Example + Criteria简介)_第1张图片

创建 Criteria 对象 可以使用Example类中的 createCriteria() 或者 or(), 如果 Criteria 对象是用 createCriteria() 创建的,它会自动为 List 属性添加一个 Criteria 对象 - 这使得它更容易写一个简单的where子句, 如果您不需要 or 或者其他几个子句组合的话,用 or(Criteria criteria) 方法创建 Criteria 对象,方法里的 criteria 对象会被添加进 Criteria 对象的列表中。

【Spring Boot 24】MyBatis逆向工程(Example + Criteria简介)_第2张图片

二、创建SpringBoot工程,添加POM



	4.0.0
	
		org.springframework.boot
		spring-boot-starter-parent
		2.4.0
		 
	
	com.guor
	MyBatisGenerator
	0.0.1-SNAPSHOT
	MyBatisGenerator
	Demo project for Spring Boot

	
		1.8
	

	
		
			org.springframework.boot
			spring-boot-starter-web
		
		
			org.mybatis.spring.boot
			mybatis-spring-boot-starter
			2.1.4
		
	    
			org.mybatis.generator
			mybatis-generator-maven-plugin
			1.3.2
		
		
			com.oracle.database.jdbc
			ojdbc8
			runtime
		
		
            com.alibaba
            druid
            1.0.20
 		
		
			cn.easyproject
			orai18n
			12.1.0.2.0
		
		
			org.springframework.boot
			spring-boot-starter-test
			test
		
	

	
		
			
				org.springframework.boot
				spring-boot-maven-plugin
			
		
	


三、配置文件

1、application.properties

spring.datasource.driverClassName=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
spring.datasource.username=mine
spring.datasource.password=mine

2、逆向工程模板,此博客的核心




    
        
     
        
        
            
            
        
        
        
        
        
            
            
        
        
        
            
            
            
            
        
        
        
            
        
        
        
            
        
        

四、加载generator.xml模板

package com.guor;

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 MybatisGenerator {
	public static void main(String[] args) throws Exception {
		File file = new File("src/generator.xml");
        System.out.println("开始逆向!!!");
        List warnings = new ArrayList();
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(file);
        DefaultShellCallback callback = new DefaultShellCallback(true);
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
        myBatisGenerator.generate(null);
        System.out.println("生成代码成功");
    }
}

执行main方法,生成代码。

【Spring Boot 24】MyBatis逆向工程(Example + Criteria简介)_第3张图片

五、创建controller,进行测试

1、controller

package com.guor.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.guor.entity.Student;
import com.guor.entity.StudentExample;
import com.guor.entity.StudentExample.Criteria;
import com.guor.mapper.StudentMapper;

@Controller
@RequestMapping("/generator")
public class StudentController {
	@Autowired
	private StudentMapper mapper;
	
	@RequestMapping(path = "/getStudents", method=RequestMethod.GET)
    public Student getStudents(){
		Student student = mapper.selectByPrimaryKey((short)1);
		System.out.println(student);
		return student;
	}
	
	@RequestMapping(path = "/getStudentsByExample", method=RequestMethod.GET)
    public void getStudentsByExample(){
		StudentExample example = new StudentExample();
		Criteria criteria = example.createCriteria();
		criteria.andAgeBetween((short)18, (short)28);
		criteria.andNameLike("%k%");
		
		Criteria criteria2 = example.createCriteria();
		criteria2.andNameLike("%j%");
		
		example.or(criteria2);//相当于where (age>18 and age<28 and name like '%k%') or name like '%j%';
		
		List list = mapper.selectByExample(example);
		System.out.println(list);
	}
}

2、简单的查询 

【Spring Boot 24】MyBatis逆向工程(Example + Criteria简介)_第4张图片

3、带or的查询

【Spring Boot 24】MyBatis逆向工程(Example + Criteria简介)_第5张图片

六、逆向工程在实际开发中用的多吗?

【Spring Boot 24】MyBatis逆向工程(Example + Criteria简介)_第6张图片

 

上一篇:【全栈最全Java框架总结】SSH、SSM、Springboot

下一篇:超详细的springBoot学习笔记

你可能感兴趣的:(Spring,Boot)