MyBatis逆向工程自动生成代码(附数据库表结构)

一、逆向工程介绍

逆向工程是一个专门为 MyBatis 框架使用者设计的代码生成器,可以根据数据库中的表字段名,自动生成 POJO 类,mapper 接口与 SQL 映射文件。支持基本的增删改查功能,以及自定义条件的查询。但是不支持复杂 SQL 与存储过程。

二、环境准备:

数据库结构文件 (拷贝直接执行即可):

t_employee表结构:

DROP TABLE IF EXISTS `t_employee`;
CREATE TABLE `t_employee` (
  `id` int(11) unsigned zerofill NOT NULL AUTO_INCREMENT,
  `username` varchar(30) DEFAULT NULL,
  `gender` char(1) DEFAULT NULL,
  `email` varchar(20) DEFAULT NULL,
  `d_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8;

t_dept表结构:

DROP TABLE IF EXISTS `t_dept`;
CREATE TABLE `t_dept` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `dept_name` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

pom.xml中添加对应的依赖 (如果不是 Maven 项目,可以点击上面的 GitHub 地址下载 jar 包):

        <dependency>
            <groupId>org.mybatis.generatorgroupId>
            <artifactId>mybatis-generatorartifactId>
            <version>1.3.6version>
        dependency>

创建目录,用于指定代码生成的位置:
MyBatis逆向工程自动生成代码(附数据库表结构)_第1张图片

三、代码生成过程

逆向工程配置文件mybatis-generator.xml




<generatorConfiguration>
    
    <context id="testTables" targetRuntime="MyBatis3Simple">

        <commentGenerator>
            
            <property name="suppressAllComments" value="true" />
        commentGenerator>

        
        <jdbcConnection driverClass="com.mysql.jdbc.Driver" 
                            connectionURL="jdbc:mysql://localhost/mybatis-study" 
                                userId="root"
                                    password="1234">
        jdbcConnection>

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

        
        <javaModelGenerator targetPackage="com.jas.mybatis.bean"
                            targetProject=".\src\main\java">
            
            <property name="enableSubPackages" value="false" />
            
            <property name="trimStrings" value="false" />
        javaModelGenerator>

        
        <sqlMapGenerator targetPackage="mapper-config"
                         targetProject=".\src\main\resources/">
            
            <property name="enableSubPackages" value="false" />
        sqlMapGenerator>

        
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.jas.mybatis.mapper"
                             targetProject=".\src\main\java">
            
            <property name="enableSubPackages" value="false" />
        javaClientGenerator>

        
        <table tableName="t_employee" domainObjectName="Employee"/>
        <table tableName="t_dept" domainObjectName="Department"/>
    context>
generatorConfiguration>  

将配置文件放在工程下:
MyBatis逆向工程自动生成代码(附数据库表结构)_第2张图片
执行生成代码的方式有很多,比如使用 Maven 插件,XML 配置文件等,这里我们通过代码的方式一键执行。

    @Test
    public void testMBG() throws Exception{
        List warnings = new ArrayList();

        boolean overwrite = true;
        // 指定代码生成配置文件的位置
        File configFile = new File("mybatis-generator.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逆向工程自动生成代码(附数据库表结构)_第3张图片
下面是 mapper 接口中自动生成的方法,只生成了五个基本的增改查方法。这几个方法能不能使用呢?下面就来测试一下。
MyBatis逆向工程自动生成代码(附数据库表结构)_第4张图片
测试:

    private SqlSessionFactory getSqlSessionFactory() throws IOException {
        String resource = "mybatis-config.xml";
        InputStream is = Resources.getResourceAsStream(resource);

        return new SqlSessionFactoryBuilder().build(is);
    }

    @Test
    public void testMyBatis3Simple() throws IOException {
        SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
        SqlSession sqlSession = sqlSessionFactory.openSession();

        // 向数据中查询 id 为 1 的用户信息
        EmployeeMapper employeeMapper = sqlSession.getMapper(EmployeeMapper.class);
        Employee employee = employeeMapper.selectByPrimaryKey(1);

        System.out.println(employee.getUsername());
    }

测试结果:
MyBatis逆向工程自动生成代码(附数据库表结构)_第5张图片

四、总结

这篇博客主要介绍了 MyBatis 中关于逆向工程的使用,逆向工程的使用可以简化我们的开发过程,提高开发效率。MyBatis 还支持其他几种生成代码的方式,只需要在标签中设置targetRuntime属性即可。

上面我们设置的值是 MyBatis3Simple,这种方式在生成代码的时候只会生成最基本的增删代码;还可以设置为MyBatis3,这种方式生成的代码支持多条件查询语句,还有其他的值可以设置,这里就不再多解释了。

一般情况下我们只用来生成最基本的代码,复杂的 SQL 语句还是由开发人员自己定义比较好。最后希望这篇博文能够为你提供帮助。

你可能感兴趣的:(MyBatis)