Mybatis-generator Mybatis逆向工程

目录

1.正向工程和逆向工程

2.配置Mybatis-generator

3.生成完全版本

4.完全版强大的查询功能


本笔记学习B站视频【尚硅谷】MyBatis零基础入门教程(细致全面,快速上手)_哔哩哔哩_bilibili

1.正向工程和逆向工程

正向工程:根据JAVA实体类,生成数据库表。Hiberate支持正向工程

逆向工程:根据数据库里的表,生成java实体类、mapper接口文件和映射文件

2.配置Mybatis-generator

(1)配置pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.atguigu.mybatis</groupId>
    <artifactId>Mybatis_MBG</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!--打包方式-->
    <packaging>jar</packaging>
    <!--依赖-->
    <dependencies>

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.7</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.21</version>
            <scope>test</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/log4j/log4j -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
        </dependency>
    </dependencies>
    <!--    控制maven在构建过程中用的的插件-->
    <build>
        <!--        具体插件,逆向工程的操作是以构建过程中以插件形式完成的-->
        <plugins>
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.2</version>
                <!--                插件的依赖-->
                <dependencies>
                    <dependency>
                        <groupId>org.mybatis.generator</groupId>
                        <artifactId>mybatis-generator-core</artifactId>
                        <version>1.3.2</version>
                    </dependency>
                    <!--                    数据库连接池-->
                    <dependency>
                        <groupId>com.mchange</groupId>
                        <artifactId>c3p0</artifactId>
                        <version>0.9.2.1</version>
                    </dependency>
                    <!--                    MySQL驱动-->
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>8.0.28</version>
                    </dependency>

                </dependencies>
            </plugin>
        </plugins>
    </build>

    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>

</project>

(2)建立核心配置文件并配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>


    <!--配置文件需要按顺序配置,顺序从前到后为properties?,settings?,typeAliases?,typeHandlers?,objectFactory?
       ,objectWrapperFactory?,reflectorFactory?,plugins?,environments?
       ,databaseIdProvider?,mappers?-->


    <properties resource="jdbc.properties"/>
    <typeAliases>

        <typeAlias type="需修改" alias="需修改"></typeAlias>

        <package name="需修改"/>
    </typeAliases>
    <environments default="development">

        <environment id="development">

            <transactionManager type="JDBC"/>

            <dataSource type="POOLED">
                <!--数据库的驱动、地址、用户名、密码-->
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    <!--mappers:
        作用:引入一些映射文件。带s-->
    <mappers>
        <!--引入一个映射文件-->
        <!--<mapper resource="需修改"/>-->

        <package name="需修改"/>
    </mappers>
</configuration>

(3)创建逆向工程的配置文件

<?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: 执行生成的逆向工程的版本
    (版本1)MyBatis3Simple: 生成基本的CRUD(清新简洁版),只会生成五种函数
    (版本2)MyBatis3: 生成带条件的CRUD(奢华尊享版)
    -->
    <context id="DB2Tables" targetRuntime="MyBatis3Simple">
        <!-- 数据库的连接信息 -->
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/clerk"
                        userId="root"
                        password="ruiyang1999">
        </jdbcConnection>
        <!-- javaBean的生成策略
        targetPackage:生成的包名
        targetProject:生成的位置
        enableSubPackages:生成的是否是子包
        trimStrings:去掉字符串前后的空格-->
        <javaModelGenerator targetPackage="com.atguigu.mybatis.pojo" targetProject=".\src\main\java">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>
        <!-- SQL映射文件的生成策略 -->
        <sqlMapGenerator targetPackage="com.atguigu.mybatis.mapper"
                         targetProject=".\src\main\resources">
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>
        <!-- Mapper接口的生成策略 -->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.atguigu.mybatis.mapper" targetProject=".\src\main\java">
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>
        <!-- 逆向分析的表 -->
        <!-- tableName设置为*号,可以对应所有表,此时不写domainObjectName -->
        <!-- domainObjectName属性指定生成出来的实体类的类名 -->
        <table tableName="emp" domainObjectName="Emp"/>
        <table tableName="dept" domainObjectName="Dept"/>
    </context>
</generatorConfiguration>

(4)执行mybatis-generator插件,生成代码

注意:1.生成的是简洁版

           2.想要打印info信息,log4j需要事先配置好

           3.无论是简洁版还是完全版,自动生成的实体类中只有属性名和getter、setter方法,还需要根据情况,手动生成(有参|无参)构造函数和toString方法

简洁版mapper包含的方法: 

 

3.生成完全版本

修改配置生成完全版

生成内容相较于简洁版在文件上,多了这几个名称带example的文件,这些文件是用来实现条件查询。

 

 完全版生成的方法: 注意注释

package com.atguigu.mybatis.mapper;

import com.atguigu.mybatis.pojo.Emp;
import com.atguigu.mybatis.pojo.EmpExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;

public interface EmpMapper {

    /*
    带有example,可以理解为根据条件来进行操作.
    可以通过example类生成各种条件拼接SQL
     */

    int countByExample(EmpExample example);

    int deleteByExample(EmpExample example);

    //和简洁版一样
    int deleteByPrimaryKey(Integer eid);
    /*和简洁版一样
    insert:会把record的全部属性值插入数据库,比如一个属性的值是null,
    该方法会把null赋值给相应字段
    insertSelective:只会将属性值不是空的属性赋值给相应字段
     */
    int insert(Emp record);

    int insertSelective(Emp record);

    List<Emp> selectByExample(EmpExample example);

    //和简洁版一样
    Emp selectByPrimaryKey(Integer eid);

    int updateByExampleSelective(@Param("record") Emp record, @Param("example") EmpExample example);

    int updateByExample(@Param("record") Emp record, @Param("example") EmpExample example);

    /*
    updateByPrimaryKey:会把record的全部属性赋值给数据库中相应的字段,
    如果属性值为null,该方法会把数据库中的对应字段置为null
    updateByPrimaryKeySelective:如果一个属性的值为null,该方法不会修改数据库中对应的字段

     */
    int updateByPrimaryKeySelective(Emp record);

    int updateByPrimaryKey(Emp record);
}

4.完全版强大的查询功能

根据条件查询函数:selectByExample(EmpExample example)

当 example=null,无条件查询,即查询所有

当 example!=null,需要生成一个EmpExample对象,

使用该对象的createCriteria()方法拼接查询条件。

使用or方法拼接或者条件

注意:1. createCriteria方法和or方法后面点(.)接的方法的格式为

            and+属性名+操作,例如andAgebetween()等,了解该规则可以帮助我们快速找到需要用的方法

          2.同样适用于按条件删除deleteByExample、按条件修改updateByExample

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值