Mybatis逆向工程使用

ima
ima
2021-04-08 / 0 评论 / 95 阅读
温馨提示:
本文最后更新于2021-04-08,若内容或图片失效,请留言反馈。

Mybatis逆向工程使用

1.引入依赖

mysql的依赖也需要

<!--        逆向工程-->
<dependency>
  <groupId>org.mybatis.generator</groupId>
  <artifactId>mybatis-generator-core</artifactId>
  <version>1.3.7</version>
</dependency>

2.配置文件

放到classpath目录

来自于:http://mybatis.org/generator/configreference/xmlconfig.html

<?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>
    <!--    <classPathEntry location="/Program Files/IBM/SQLLIB/java/db2java.zip" />-->
    
    <context id="DB2Tables" targetRuntime="MyBatis3">
        <commentGenerator>
            <!--            是否取去除自动生成注释  false会生成大量无用注释-->
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>
        <jdbcConnection driverClass="COM.ibm.db2.jdbc.app.DB2Driver"
                        connectionURL="jdbc:db2:TEST"
                        userId="db2admin"
                        password="db2admin">
            <!--            是否去除同名表-->
            <property name="nullCatalogMeansCurrent" value="true"/>
        </jdbcConnection>

        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>
        <!-- 生成JavaBean的配置信息
        targetProject:生成POJO类的位置
        targetPackage:生成POJO类的类的报名
        此配置文件放到classpath目录下
        targetProject:.\src\main\java  mac:\
        targetPackage: com.jiangsonglin.bean
        
        -->
        <javaModelGenerator targetPackage="test.model" targetProject=".\src\main\java">
            <!--   enableSubPackages:
                     是否允许子包,是否允许schema作为包的后缀。   后面配置中的:<table schema="DB2ADMIN"
                     即 targetPackage.schemaName.tableName
            
            -->
            <property name="enableSubPackages" value="true"/>

            <!--            从数据库返回值是否清理前后空格-->
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>


        <!--        mapper文件的配置信息
        
                    targetPackage:com.jiangsonglin.mapper
                    targetProject:.\src\main\resource
                    enableSubPackages:是否让schema作为包的后缀
        -->
        <sqlMapGenerator targetPackage="test.xml" targetProject="\MBGTestProject\src">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>

        <!--        生成的DAO配置信息
        
        这里是根据XMLMAPPER:
                生成的对象将是MyBatis 3.x映射器基础结构的Java接口。接口将取决于生成的XML映射器文件。
        
        还有:
            ANNOTATEDMAPPER:生成的对象将是MyBatis 3.x映射器基础结构的Java接口。这些接口将基于注释和MyBatis 3.x SqlProviders。不会生成XML映射器文件。
                ANNOTATEDMAPPER需要MyBatis版本3.0.4或更高版本。
        
            MIXEDMAPPER:生成的对象将是MyBatis 3.x映射器基础结构的Java接口。这些接口将基于注释和XML的混合。在将使用简单注释的地方将使用注释。该客户端将不会生成和Sql Provider,因此所有复杂的动态SQL都将以XML生成。
                MIXEDMAPPER需要MyBatis版本3.0.4或更高版本。
        -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="test.dao" targetProject="\MBGTestProject\src">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>

        <!--        可以写多个表-->
        <table schema="DB2ADMIN" tableName="ALLTYPES"
               domainObjectName="Customer">
        </table>


    </context>
</generatorConfiguration>


启动类

工作目录最好是启动类所在的moudle根目录

	public void generator() throws Exception{

		List<String> warnings = new ArrayList<String>();
		boolean overwrite = true;
		//指定 逆向工程配置文件
		File configFile = new File("resource/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();
		}
		
	}

生成分页以及total(PageHelper)

引入依赖

<!--        PageHelper-->
<dependency>
  <groupId>com.github.pagehelper</groupId>
  <artifactId>pagehelper-spring-boot-starter</artifactId>
  <version>1.2.12</version>
</dependency>

配置文件

springBoot配置文件中配置数据库信息


pagehelper.auto-dialect=mysql

使用

Integer page = 1;
Integer limit = 1;
// mybatis在构建sql语句的时候就会加上page limit
PageHelper.startPage(page,limit);

// 假设这是你的查询结果
List<User> users = userMapper.select();

// 将查询结果传入
PageInfo<User> userPageInfo = new PageInfo<>(users);
// 获取total
long total = userPageInfo.getTatol(); // 执行了select count(*) where 条件(上面查询结果中的条件,所以不用担心数据不一样)