mybatis逆向工程mbg
Posted 云晴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis逆向工程mbg相关的知识,希望对你有一定的参考价值。
更多精彩文章欢迎关注公众号“Java之康庄大道”
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的
以上是关于mybatis逆向工程mbg的主要内容,如果未能解决你的问题,请参考以下文章
13.3.2 完整的MBG配置文件(MyBatis Generator逆向代码生成工具) -《SSM深入解析与项目实战》
13.3.2 完整的MBG配置文件(MyBatis Generator逆向代码生成工具) -《SSM深入解析与项目实战》
MyBatis逆向工程——MyBatis Generator (MBG)-简单介绍与运行步骤
13.3.3 MBG其他配置(MyBatis Generator逆向代码生成工具) -《SSM深入解析与项目实战》