MyBatis8_逆向工程

MyBatis8_逆向工程

MyBatis Generator:

  • 简称MBG,是一个专门为MyBatis框架使用者定制的代码生成器,可以快速的根据表生成对应的映射文件,接口,以及bean类。支持基本的增删改查,以及QBC风格的条件查询,但是表连接、存储过程等这些复杂sql的定义需要我们手工编写。
  • 官方文档地址:http://www.mybatis.org/generator/
  • 官方工程地址:https://github.com/mybatis/generator/releases

1.MyBatisGenerator

1.使用步骤

使用步骤:
1、编写MBG的配置文件(重要几处配置)

  • jdbcConnection:配置数据库连接信息。
  • javaModelGenerator:配置javaBean的生成策略。
  • sqlMapGenerator:配置sql映射文件生成策略。
  • javaClientGenerator:配置Mapper接口的生成策略。
    • tableName:表名。
    • domainObjectName:对应的javaBean名。

2、运行代码生成器生成代码

3、注意:Context标签
targetRuntime=“MyBatis3“可以生成带条件的增删改查。
targetRuntime=“MyBatis3Simple“可以生成基本的增删改查。
如果再次生成,建议将之前生成的数据删除,避免xml向后追加内容出现的问题。

2.MyBatisGenerator使用

导包
在这里插入图片描述

使用教程在在GitHub上可以找到,复制下来就可以直接使用了。
在这里插入图片描述
在项目路径下添加mbg.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>

    <!--
        targetRuntime="MyBatis3Simple":生成简单版的CRUD
        MyBatis3:生成复杂的CRUD
     -->
    <context id="DB2Tables" targetRuntime="MyBatis3Simple">
        <!-- jdbcConnection:指定如何连接到目标数据库 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/mybatis?allowMultiQueries=true"
                        userId="root"
                        password="root">
        </jdbcConnection>

        <!-- Java类型解析器 可以参考官网文档 -->
        <javaTypeResolver >
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>

        <!--
            javaModelGenerator:指定javaBean的生成策略。
            targetPackage="com.ginger.mybatis.bean":目标包名。
            targetProject=".\src":生成在哪个工程下,我这里指定的是当前项目的src路径下。
        -->
        <javaModelGenerator targetPackage="com.ginger.mybatis.bean" targetProject=".\src">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>

        <!-- 
        	sqlMapGenerator:sql映射生成策略。
        	 targetPackage="com.ginger.mybatis.bean":目标包名。
        	 targetProject=".\src":生成在哪个工程下,我这里指定的是当前项目的conf路径下。
        -->
        <sqlMapGenerator targetPackage="com.ginger.mybatis.dao" targetProject=".\conf">
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>

        <!-- 
        	javaClientGenerator:指定mapper接口所在的位置 
        	targetPackage="com.ginger.mybatis.bean":目标包名。
        	targetProject=".\src":生成在哪个工程下,我这里指定的是当前项目的conf路径下。
        -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.ginger.mybatis.dao" targetProject=".\src">
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>

        <!-- 指定要逆向分析哪些表:根据表要创建javaBean -->
        <table tableName="employee" domainObjectName="Employee"></table>
        <table tableName="department" domainObjectName="Department"></table>
    </context>
</generatorConfiguration>

创建一个测试类,来生成代码。

public class MyBatisGeneratorTest{
	@Test
	 public void testMyBatisGenerator() throws Exception {
	     List<String> warnings = new ArrayList<String>();
	     boolean overwrite = true;
	     File configFile = new File("mbg.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);
	 }
}

生成的代码
在这里插入图片描述

//测试 
@Test
public void testMyBatis3Simple() throws IOException {
    SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
    SqlSession openSession = sqlSessionFactory.openSession();
    try{
        EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
        //EmployeeExample 如果是 null 就是查询所有
        List<Employee> list = mapper.selectByExample(null);
        for (Employee employee : list) {
            System.out.println(employee);
        }
    }finally{
        openSession.close();
    }
}

测试结果
在这里插入图片描述
上面的配置只是生成简单的正删改查,如果想生成复杂的增删改查可以将mbg.xml中的context 标签的 targetRuntime属性改为MyBatis3就可以生成复杂代码。
在这里插入图片描述

//测试  QBC风格的带条件查询
@Test
public void testMyBatis3() throws IOException{
    SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
    SqlSession openSession = sqlSessionFactory.openSession();
    try{
        EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
        //xxxExample就是封装查询条件的
        //1、查询所有
        //List<Employee> emps = mapper.selectByExample(null);
        //2、查询员工名字中有e字母的,和员工性别是1的
        //封装员工查询条件的example
        EmployeeExample example = new EmployeeExample();
        //创建一个Criteria,这个Criteria就是拼装查询条件
        //select id, last_name, email, gender, d_id from employee
        //WHERE ( last_name like ? and gender = ? ) or email like "%e%"
        EmployeeExample.Criteria criteria = example.createCriteria();
        criteria.andLastNameLike("%小%");
        criteria.andGenderEqualTo("1");

        EmployeeExample.Criteria criteria2 = example.createCriteria();
        criteria2.andEmailLike("%x%");
        example.or(criteria2);

        List<Employee> list = mapper.selectByExample(example);
        for (Employee employee : list) {
            System.out.println(employee);
        }
    }finally{
        openSession.close();
    }
}

测试结果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值