mybatis generator 使用与 mybatis 与属性转换

发布时间 2023-06-07 18:35:33作者: ayiZzzz

mybatis generator

MyBatis Generator 是 MyBatis 提供的一个代码生成工具。可以帮我们生成 表对应的持久化对象(po)、操作数据库的接口(dao)、CRUD sql的xml(mapper)。

MyBatis Generator 是一个独立工具,你可以下载它的jar包来运行、也可以在 Ant 和 maven 运行。

引入相关依赖

  • mybatis 依赖和代码生成器插件

<!-- 为了方便,不展示其它配置... -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.2.2</version>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.21</version>
</dependency>

mybatis 相关依赖


  • 代码生成器插件
    <build>
        <plugins>
            <!--引入generator插件-->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.7</version>
                <dependencies>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>8.0.25</version>
                    </dependency>
                </dependencies>
                <configuration>
                    <!--允许移动生成的文件-->
                    <verbose>true</verbose>
                    <!--允许自动覆盖文件,第一次可覆盖,以后都不可覆盖-->
                    <overwrite>true</overwrite>
                    <!-- 自定义配置文件的名称  默认是generatorConfig.xml -->
                    <configurationFile>
                        src/main/resources/mybatis-generator-config.xml
                    </configurationFile>
                </configuration>
            </plugin>


        </plugins>

    </build>

代码生成器


配置生成器 xml 信息 mybatis-generator-config

<?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>
    <!--数据库驱动-->
    <!--
        如果IDE(eclipse或者idea) 项目里导入了jar包,那么就不需要配置了jar包的绝对路径了
         <classPathEntry    location="e:/project/mybatis/lib/mysql-connector-java-5.0.8-bin.jar"/>
    -->
    <context id="Mysql"   targetRuntime="MyBatis3">
        <!-- 生成 toString-->
        <plugin type="org.mybatis.generator.plugins.ToStringPlugin" />
        <!--生成mapper.xml时覆盖原文件-->
        <plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin" />

        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <property name="suppressAllComments" value="false"/>
        </commentGenerator>
        <!--数据库链接地址账号密码-->
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://192.168.30.129:3306/stu?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=false&amp;serverTimezone=UTC"
                        userId="root" password="root">
        </jdbcConnection>
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>
        <!--生成Model类存放位置-->
        <javaModelGenerator targetPackage="com.ayi.dao.entity" targetProject="src\main\java">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!--生成映射文件存放位置-->
        <sqlMapGenerator targetPackage="mapper" targetProject="src\main\resources">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
        <!--生成Dao类存放位置-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.ayi.dao.mapper" targetProject="src\main\java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>


        <!--生成对应表及类名-->
        <table tableName="wallet" domainObjectName="Wallet">
            <!-- 这里可以配置相关的 BaseTypeHandler 类型转换器 -->
            <columnOverride column="balance" javaType="org.joda.money.Money" jdbcType="BIGINT"
                            typeHandler="com.ayi.handler.MoneyTypeHandler"/>
        </table>

    </context>
</generatorConfiguration>

启动相关插件

2、生成的相关类

测试

@SpringBootTest
@RunWith(SpringRunner.class)
public class JoaMoneyApplicationTest {


    @Resource
    private WalletMapper walletMapper;


    @Test
    public void test() {

        Wallet wallet = new Wallet();

        Money cny = Money.ofMinor(CurrencyUnit.of("CNY"), 1000);

        wallet.setBalance(cny);

        wallet.setHolder("ayizzz");

        WalletExample walletExample = new WalletExample();
        walletExample.createCriteria().andIdEqualTo(1L);
        List<Wallet> wallets = walletMapper.selectByExample(walletExample);
        wallets.forEach(System.out::println);
    }
}