Mybatis骚操作之逆向工程

前言

每天进步一点点,今天又学到一个骚操作,来做个记录,关闭Mybatis的,代码生成器,可以帮助我们生成pojo以及mapper文件,真的是又减少了代码量,懒人必备。
本文DEMO下载:戳我前往

1.准备工作

1) 准备jar包。
Mybatis-Generator的,我在Git上拿的,地址https://github.com/mybatis/generator/releases
其他包,我是在Maven仓库下载的:https://mvnrepository.com/
在这里插入图片描述
2)准备逆向的配置文件,见代码,命名为Config.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="testTables" targetRuntime="MyBatis3">
		<commentGenerator>
			<!-- 是否去除自动生成的注释 true:是 ,false:否 -->
			<property name="suppressAllComments" value="true" />
		</commentGenerator>
		
		<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
		<jdbcConnection 
			driverClass="com.mysql.jdbc.Driver"
			connectionURL="jdbc:mysql://localhost:3306/test"
			userId="root"
			password="root">
		</jdbcConnection>
		
		<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,
			为 true时把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal -->
		<javaTypeResolver>
			<property name="forceBigDecimals" value="false" />
		</javaTypeResolver>

		<!-- targetProject:生成POJO类的位置 -->
		<javaModelGenerator  targetPackage="cc.buyfree.pojo"
			targetProject=".\src">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
			<!-- 从数据库返回的值被清理前后的空格 -->
			<property name="trimStrings" value="true" />
		</javaModelGenerator>
		
		 <!-- targetProject:mapper映射文件生成的位置 -->
		<sqlMapGenerator targetPackage="cc.buyfree.mapper" 
			targetProject=".\src">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
		</sqlMapGenerator>
		<!-- targetPackage:mapper接口生成的位置 -->
		<javaClientGenerator type="XMLMAPPER"
			targetPackage="cc.buyfree.mapper" 
			targetProject=".\src">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
		</javaClientGenerator>
		<!-- 指定数据库表,生成几个写几个 -->
		<table schema="" tableName="orders"></table>
		<table schema="" tableName="users"></table>	
		
	</context>
</generatorConfiguration>

3)准备java文件,创建新web工程,将刚刚的config文件,放到项目路径下,然后右击运行java文件即可生成,为防止控制台一片空白,控制台会出现“OJBK”字样,运行后刷新项目(如果是项目需要,只要把两个包拷贝走即可)

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;

/**
 * 逆向生成  pojo和mapper
 */
public class GeneratorSqlmap {

	/**
	 * 生成的方法
	 */
	public void generator() throws Exception{
		List<String> warnings = new ArrayList<String>();
		boolean overwrite = true;
		//指定 逆向工程配置文件
		File configFile = new File("config.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();
			System.out.println("OJBK");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

2.测试效果

1) 运行成功后,一定要刷新项目(F5),不然不会显示。刷新后的目录,如下:
在这里插入图片描述
2) 测试效果,看看是不是和自己写的一样。(新建测试类,导入mybatis配置文件,以及jdbc的外部文件)

import java.io.IOException;
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.Before;
import org.junit.Test;
import cc.buyfree.mapper.UsersMapper;
import cc.buyfree.pojo.Users;

public class UserTest {
	
	private SqlSessionFactory factory;
	
	@Before
	public void Before() throws IOException {
		factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("SqlMapConfig.xml"));
	}
	
	/**
	 * 通过ID查找
	 */
	@Test
	public void selectById() {
		SqlSession session = factory.openSession();
		UsersMapper mapper = session.getMapper(UsersMapper.class);
		//查询ID为50的用户,相当于select * from users where id=50
		Users u = mapper.selectByPrimaryKey(50);
		//生成的pojo没有toString方法,需要的话可以去对应类加一个
		System.out.println(u);
	}
}

控制台输出:
在这里插入图片描述

3.XxxExample实例测试

1) XxxExample文件,手写的时候重来都没有写过这个文件,里面有三个字段,最有意思的是oredCriteria字段,自定义查询。
在这里插入图片描述

2)关于oredCriteria的操作演示:
相比较于上面的那个查询,他俩是一样的,上面那个使用mapper接口里面的方法,这个使用XxxExample类中方法,大多都相同。
在这里插入图片描述

4.Mapper接口方法解析

其实,我对那几个BLOS的方法,并不是很了解,望大佬指点。

方法功能
long countByExample(UsersExample example)按条件计数
int deleteByExample(UsersExample example)按条件删除
int deleteByPrimaryKey(Integer id)按主键删除
int insert(Users record)插入全部字段
int insertSelective(Users record)选择性插入
List selectByExampleWithBLOBs(UsersExample example)按条件查询(含BLOB字段)
List selectByExample(UsersExample example)按条件查询
Users selectByPrimaryKey(Integer id)按主键查询
int updateByExampleSelective(@Param(“record”) Users record, @Param(“example”) UsersExample example)按条件更新不为null字段
int updateByExampleWithBLOBs(@Param(“record”) Users record, @Param(“example”) UsersExample example)按条件更新(含BLOB字段)
int updateByExample(@Param(“record”) Users record, @Param(“example”) UsersExample example)按条件更新
int updateByPrimaryKeySelective(Users record)按主键更新不为null字段
int updateByPrimaryKeyWithBLOBs(Users record)按主键更新(含BLOB字段)
int updateByPrimaryKey(Users record)按主键更新

5.XxxxExample实例解析

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值