Mybatis学习笔记(十五)——逆向工程

本博客源码下载:戳我一下

Mybatis学习笔记汇总:戳我一下

一、什么是逆向工程

mybaits需要程序员自己编写sql语句,mybatis官方提供逆向工程 可以针对单表自动生成mybatis执行所需要的代码(包括mapper.xmlmapper.javapojo类

企业实际开发中,常用的逆向工程方式:
由于数据库的表生成java代码。

二、下载逆向工程:戳我一下

三、配置generatorConfig.xml




<generatorConfiguration>
    <context id="testTables" targetRuntime="MyBatis3">
        <commentGenerator>
            
            <property name="suppressAllComments" value="true" />
        commentGenerator>
        
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
            connectionURL="jdbc:mysql://localhost:3306/mybatis" userId="root"
            password="1234">
        jdbcConnection>
        

        
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false" />
        javaTypeResolver>

        
        <javaModelGenerator targetPackage="com.jiayifan.ssm.po"
            targetProject=".\src">
            
            <property name="enableSubPackages" value="false" />
            
            <property name="trimStrings" value="true" />
        javaModelGenerator>
        
        <sqlMapGenerator targetPackage="com.jiayifan.ssm.mapper" 
            targetProject=".\src">
            
            <property name="enableSubPackages" value="false" />
        sqlMapGenerator>
        
        <javaClientGenerator type="XMLMAPPER"
            targetPackage="com.jiayifan.ssm.mapper" 
            targetProject=".\src">
            
            <property name="enableSubPackages" value="false" />
        javaClientGenerator>
        
        <table tableName="items">table>
        <table tableName="orders">table>
        <table tableName="orderdetail">table>
        <table tableName="user">table>

    context>
generatorConfiguration>

四、生成mapper.javamapper.xmlpojo

package com.jiayifan.creat;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import org.junit.Test;
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 creatMapper {
    @Test
    public void generator() throws Exception{
        List warnings = new ArrayList();
        boolean overwrite = true;
        //指定逆向工程配置文件
        File configFile = new File("config/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);

    }
}

五、生成代码展示

Mybatis学习笔记(十五)——逆向工程_第1张图片

六、测试生成的代码

//自定义条件查询
    @Test
    public void testSelectByExample() {
        ItemsExample itemsExample = new ItemsExample();
        //通过criteria构造查询条件
        ItemsExample.Criteria criteria = itemsExample.createCriteria();
        criteria.andNameEqualTo("笔记本3");
        //可能返回多条记录
        List list = itemsMapper.selectByExample(itemsExample);

        System.out.println(list);

    }

    //根据主键查询
    @Test
    public void testSelectByPrimaryKey() {
        Items items = itemsMapper.selectByPrimaryKey(1);
        System.out.println(items);
    }


//插入
    @Test
    public void testInsert() {
        //构造 items对象
        Items items = new Items();
        items.setName("手机");
        items.setPrice(999f);
        itemsMapper.insert(items);
    }

//更新数据
    @Test
    public void testUpdateByPrimaryKey() {

        //对所有字段进行更新,需要先查询出来再更新
        Items items = itemsMapper.selectByPrimaryKey(1);

        items.setName("水杯");

        itemsMapper.updateByPrimaryKey(items);
        //如果传入字段不空为才更新,在批量更新中使用此方法,不需要先查询再更新
        //itemsMapper.updateByPrimaryKeySelective(record);

    }

七、逆向工程注意事项

1、Mapper文件内容不覆盖而是追加
XXXMapper.xml文件已经存在时,如果进行重新生成则mapper.xml文件内容不被覆盖而是进行内容追加,结果导致mybatis解析失败。
解决方法:删除原来已经生成的mapper xml文件再进行生成。
Mybatis自动生成的pojomapper.java文件不是内容而是直接覆盖没有此问题。

2、Table schema问题
下边是关于针对oracle数据库表生成代码的schema问题:

Schma即数据库模式,oracle中一个用户对应一个schema,可以理解为用户就是schema
Oralce数据库存在多个schema可以访问相同的表名时,使用mybatis生成该表的mapper.xml将会出现mapper.xml内容重复的问题,结果导致mybatis解析错误。
解决方法:在table中填写schema,如下:


XXXX即为一个schema的名称,生成后将mapper.xmlschema前缀批量去掉,如果不去掉当oracle用户变更了sql语句将查询失败。
快捷操作方式:mapper.xml文件中批量替换:“from XXXX.”为空

Oracle查询对象的schema可从dba_objects中查询,如下:
select * from dba_objects

你可能感兴趣的:(Mybatis)