mbg:mybatis generator=mybatis 代码生成器
1. 看一下项目结构
其中 bean 文件, mapper 接口文件和 mapper.xml 文件是代码生成器自动生成的
使用 generator 生成器的方法, 百度 mybatis, 进入 git 仓库, 点 mybatis, 找到 generator 就是生成器的源码和使用方法说明书
首先, 编写一个 dmscq.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>
- <!-- targetRuntime="MyBatis3": 生成 mybatis 豪华框架, 如果是 MyBatis3Simple 则生成简单框架 -->
- <context id="DB2Tables" targetRuntime="Mybatis3">
- <jdbcConnection driverClass="com.mysql.jdbc.Driver"
- connectionURL="jdbc:mysql://localhost:3306/db_blog?allowMultiQueries=true"
- userId="root"
- password="5678">
- </jdbcConnection>
- <javaTypeResolver >
- <property name="forceBigDecimals" value="false" />
- </javaTypeResolver>
- <!-- 指定 javabean 的生成策略
- targetPackage: 目标包名 targetProject: 目标工程 -->
- <javaModelGenerator targetPackage="com.atguigu.mybatis.bean" targetProject=".\src">
- <property name="enableSubPackages" value="true" />
- <property name="trimStrings" value="true" />
- </javaModelGenerator>
- <!-- sqlMapGenerator:sql 映射生成策略: -->
- <sqlMapGenerator targetPackage="com.atguigu.mybatis.dao" targetProject=".\conf">
- <property name="enableSubPackages" value="true" />
- </sqlMapGenerator>
- <!-- javaClientGenerator: 指定 mapper 接口所在的位置 -->
- <javaClientGenerator type="XMLMAPPER" targetPackage="com.atguigu.mybatis.dao" targetProject=".\src">
- <property name="enableSubPackages" value="true" />
- </javaClientGenerator>
- <!-- 指定要逆向分析哪些表: 根据表要创建 javaBean -->
- <table tableName="t_blogger" domainObjectName="Blogger"></table>
- <table tableName="t_dep" domainObjectName="Department"></table>
- </context>
- </generatorConfiguration>
写好配置文件后, 去 test 类中写一个生成的方法
- package com.atguigu.mybatis.test;
- import java.io.File;
- import java.io.IOException;
- import java.io.InputStream;
- import java.util.ArrayList;
- import java.util.List;
- 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 org.mybatis.generator.api.MyBatisGenerator;
- import org.mybatis.generator.config.Configuration;
- import org.mybatis.generator.config.xml.ConfigurationParser;
- import org.mybatis.generator.internal.DefaultShellCallback;
- import com.atguigu.mybatis.bean.Blogger;
- import com.atguigu.mybatis.bean.BloggerExample;
- import com.atguigu.mybatis.bean.BloggerExample.Criteria;
- import com.atguigu.mybatis.dao.BloggerMapper;
- public class MyBatisTest {
- public SqlSessionFactory getSqlSessionFactory() throws IOException {
- String resource = "mybatis-config.xml";
- InputStream inputStream = Resources.getResourceAsStream(resource);
- return new SqlSessionFactoryBuilder().build(inputStream);
- }
- // 生成代码根据配置文件
- @Test
- public void runDmscq() throws Exception{
- List<String> warnings = new ArrayList<String>();
- boolean overwrite = true;
- File configFile = new File("dmscq.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);
- }
- // 测试生成代码
- @Test
- public void getBloggerByExample() throws Exception {
- SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
- SqlSession openSession = sqlSessionFactory.openSession();
- BloggerMapper mapper = openSession.getMapper(BloggerMapper.class);
- //selectByExample: 查询根据条件, 条件为 null 则是查询所有
- /*List<Blogger> selectByExample = mapper.selectByExample(null);
- for (Blogger blogger : selectByExample) {
- System.out.println(blogger);
- }*/
- // 查询 username 中带 e 的并且 profile 中带 e 的
- BloggerExample bloggerExample = new BloggerExample();
- Criteria createCriteria = bloggerExample.createCriteria();
- createCriteria.andUsernameLike("%e%");
- createCriteria.andProfileLike("%e%");
- /*List<Blogger> list = mapper.selectByExample(bloggerExample);
- for (Blogger blogger : list) {
- System.out.println(blogger);
- }*/
- // 如果加个条件, 查询 username 中带 e 的并且 profile 中带 e 的,(或者 sign 中带 c 的)
- Criteria criteriaCriteria2 = bloggerExample.createCriteria();
- criteriaCriteria2.andSignLike("%c%");
- // 和之前的条件进行拼装
- bloggerExample.or(criteriaCriteria2);
- List<Blogger> blo = mapper.selectByExample(bloggerExample);
- for (Blogger blogger : blo) {
- System.out.println(blogger);
- }
- }
- }
以上测试代码分别测试了, 黄色查询所有的 blogger, 绿色的查询 username 和 profile 中都带 e 的最后所有没注释掉的代码是查询 username 和 profile 中都带 e 或者 sign 中带 c 的
来源: http://www.bubuko.com/infodetail-2503796.html