Mybatis 代码生成器-generator

33 阅读1分钟

MyBatis Generator (MBG)项目地址: github.com/mybatis/gen…

MyBatis Generator使用

1、POM文件添加依赖

<dependency>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-core</artifactId>
    <version>1.4.2</version>
</dependency>

2、配置generator的xml文件

<!DOCTYPE generatorConfiguration PUBLIC
        "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>

<!-- 如果使用command的方式生成需要的配置 需要配置classPathEntry     -->
<!--    <classPathEntry location="指定数据库驱动的磁盘路径"/>-->

<!--
   生成上下文 配置生成规则
   targetRuntime 生成策略
    MyBatis3DynamicSql  默认的  会生成带动态的CRUD
    MyBatis3 生成通用的查询  可以指定动态的where条件
    Mybatis3Simple  只生成简单的CURD

-->


    <context id="simple" targetRuntime="MyBatis3">
<!--        <commentGenerator>-->
<!--            <property name="suppressAllComments" value="true"/>-->
<!--        </commentGenerator>-->
<!--        数据源-->
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/mybatis"
        userId="root" password="root"/>
<!--       pojo -->
        <javaModelGenerator targetPackage="com.kdy.pojo" targetProject="src/main/java"/>

        <!--        mapper xml映射-->
        <sqlMapGenerator targetPackage="com.kdy.mapper" targetProject="src/main/resources"></sqlMapGenerator>



        <!--        mapper接口-->
<!--        type ANNOTATEDMAPPER  注解方式   -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.kdy.mapper" targetProject="src/main/java"/>


<!--        那些表需要进行代码生成-->
        <table tableName="emp" domainObjectName="Emp" mapperName="EmpMapper"/>
        <table tableName="dept" domainObjectName="Dept" mapperName="DeptMapper"></table>
    </context>
</generatorConfiguration>

<!--运行
1、

 java -jar mybatis-generator-core-x.x.x.jar -configfile \temp\generatorConfig.xml -overwrite

-->

3、使用生成相关的类及XML文件

@Test
public void test01() throws XMLParserException, IOException, InvalidConfigurationException, SQLException, InterruptedException {
    List<String> warnings = new ArrayList<String>();
    boolean overwrite = true;
    File configFile = new File("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);
}

4、使用代码

import com.kdy.mapper.EmpMapper;
import com.kdy.pojo.Emp;
import com.kdy.pojo.EmpExample;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class MyTest {
    SqlSession sqlSession;
    @Test
    public void test01() throws IOException {
        //根据XML构建成sqlSessionFactory
        String config = "mybatis.config.xml";
        //将XML构建成输入流
        InputStream inputStream= Resources.getResourceAsStream(config);

        //建成sqlSessionFactory
        try {
            SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            sqlSession = sessionFactory.openSession();
            EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
//            List<Emp>  emp = mapper.selectAll();
//            System.out.println(emp);
            Emp emp = mapper.selectByPrimaryKey(1);
            System.out.println(emp);
        }catch (Exception ex){
            //LOGGER.
            System.out.println(ex);
        }
    }


    @Test
    public void test02() throws IOException {
        //根据XML构建成sqlSessionFactory
        String config = "mybatis.config.xml";
        //将XML构建成输入流
        InputStream inputStream= Resources.getResourceAsStream(config);

        //建成sqlSessionFactory
        try {
            SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            sqlSession = sessionFactory.openSession();
            EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
//            List<Emp>  emp = mapper.selectAll();
//            System.out.println(emp);
            EmpExample empExample = new EmpExample();
            EmpExample.Criteria criteria = empExample.createCriteria();
            criteria.andUsernameLike("%名%");

//            Emp emp = mapper.
//            System.out.println(emp);
            List<Emp> emp =mapper.selectByExample(empExample);
            System.out.println(emp);


        }catch (Exception ex){
            //LOGGER.
            System.out.println(ex);
        }
    }


}