mybatis逆向工程

正向工程

先创建java实体类,由框架负责根据实体类生成数据库表。Hibernate是支持正向工程

逆向工程

先创建数据库表,由框架负责数据库表,反向生成如下资源

  • java实体类

  • mapper接口

  • mapper映射文件

创建逆向工程的步骤

pom配置文件

<build>
        <!--逆向工程插件-->
        <plugins>
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.7</version>
                <!--插件的依赖-->
                <dependencies>
                    <!--逆向工程的核心依赖-->
                    <dependency>
                        <groupId>org.mybatis.generator</groupId>
                        <artifactId>mybatis-generator-core</artifactId>
                        <version>1.3.7</version>
                    </dependency>
                    <!--数据库连接池-->
                    <dependency>
                        <groupId>com.mchange</groupId>
                        <artifactId>c3p0</artifactId>
                        <version>0.9.5.2</version>
                    </dependency>
                    <!--mysql驱动-->
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>5.1.37</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>

创建逆向工程配置文件

文件固定 resource / generatorConfig.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>
    <properties resource="jdbc.properties"></properties>
    <!--
        targetRuntime:执行生成的逆向工程的版本
            MyBatis3Simple: 生成基本的CRUD(清新简洁版)
            MyBatis3: 生成带条件的CRUD(奢华尊享版)
    -->
    <context id="DB2Tables" targetRuntime="MyBatis3Simple">
        <!--数据库连接信息-->
        <jdbcConnection driverClass="${jdbc.driver}"
                        connectionURL="${jdbc.url}"
                        userId="${jdbc.username}"
                        password="${jdbc.password}">
        </jdbcConnection>
        <!--
            javaBean生成策略
                targetPackage:生成的包
                targetProject:生成的位置
        -->
        <javaModelGenerator targetPackage="com.atguigu.mybatis.pojo" targetProject=".\src\main\java">
            <!--开启子包,上面package每个点对应一个子包-->
            <property name="enableSubPackages" value="true"/>
            <!--去除字段名处等 字符串空格-->
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!--
            sql映射文件生成策略 resource下的
                targetPackage:生成的包
                targetProject:生成的位置
        -->
        <sqlMapGenerator targetPackage="com.atguigu.mybatis.mappers" targetProject=".\src\main\resource">
            <!--开启子包,上面package每个 . 对应一个子包-->
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
        <!--
            mapper接口生成策略 java下的
                type:
                targetPackage:生成的包
                targetProject:生成的位置
        -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.atguigu.mybatis.mappers" targetProject=".\src\main\java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>
​
        <!--
            逆向分析的表
            tableName:设置数据表名,设置为* , 可以对应所有表,此时不写domainObjectName
            domainObjectName:设置指定生成出来的实体类的类名
        -->
        <table tableName="t_emp" domainObjectName="Emp" />
        <table tableName="t_dept" domainObjectName="Dept" />
    </context>
</generatorConfiguration>

点击执行

QBC查询

在MBG生成的mapper接口中有方法 selectByExample(Example example) 意为按照条件查询,example为条件

首先创建条件对象

EmpExample empExample = new EmpExample();

通过createCriteria()方法开启添加条件,and{BeanName}{Criteria}方法添加条件查询,每个条件为and关系

empExample.createCriteria().andEnameLike("a").andAgeGreaterThan(20).andDidIsNot Null();

通过将之前添加的条件通过or拼接其他and条件

empExample.or().andSexEqualTo("男");

执行mapper的selectByExample方法,获取查询到的记录

List<Emp> list = mapper.selectByExample(empExample);

选择性添加

updateBy{xxx}Selective(new {Bean}())根据你新建的bean对象,对数据表进行可选的修改,当bean对象的属性有null的时候,表里对应的属性不进行更新

updateBy{xxx}(new {Bean}())当bean对象的属性有null的时候,表里对应的属性更新为null

posted on 2022-08-20 12:57  老菜农  阅读(42)  评论(0编辑  收藏  举报

导航