mybatis学习笔记五mybatis 逆向工程
在日常开发中如果数据库中存在多张表自己手动创建 多个pojo 类和编写 SQL 语法配置文件未免太过繁琐mybatis 也提供了一键式生成这些文件的操作我们称为 mybatis 逆向工程。一般我们在开发中采用由数据库的表生成java代码。
mybatis 逆向工程的下载
贴上官网链接Mybatis Generator
当然对于 jar 包的下载我们可以直接使用 maven 导入
org.mybatis.generatormybatis-generator-core1.3.7
运行逆向工程
Mybatis Generator 提供了好几种方式来运行逆向工程
可以通过 maven 工程java 程序eclipse 插件等方式运行为了后续开发的兼容性问题在这里我们采用 java 程序通过 xml 方式配置不用依赖于开发工具。
mybatis 逆向工程实例
在这里我们通过一个具体的例子来演示 mybatis 逆向工程的操作过程。
- 创建一个新的maven工程mybatis-generator。配置 pom.xml 文件导入 相关的 jar 包
4.0.0cn.itcastmybatis-generator1.0-SNAPSHOTmysqlmysql-connector-java8.0.12org.mybatismybatis3.4.6org.apache.antant1.9.6org.apache.antant-launcher1.9.6org.ow2.asmasm5.2cglibcglib3.2.5commons-loggingcommons-logging1.2org.javassistjavassist3.22.0-GAlog4jlog4j1.2.17org.apache.logging.log4jlog4j-api2.3org.apache.logging.log4jlog4j-core2.3ognlognl3.1.16org.slf4jslf4j-api1.7.25org.slf4jslf4j-log4j121.7.25testorg.mybatis.generatormybatis-generator-core1.3.7
- 在 resources 下创建生成代码配置文件 generatorConfig.xml
我们指定需要的文件路径
javaModelGenerator生成PO类的位置。
sqlMapGeneratormapper映射文件生成的位置。
javaClientGeneratormapper接口生成的位置。
table指定数据库表。
重要
需要注意的是这里关于 MySQL 数据库配置这方面如果按上面的配置文件的话会报如下错误
Loading class com.mysql.jdbc.Drive. This is deprecated. The new driver class is com.mysql.cj.jdbc.Driver. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
其实就是因为我们导入的 mysql-connector包使用了新的驱动上述的com.mysql.jdbc.Driver已经废弃建议我们使用 com.mysql.cj.jdbc.Driver并且还应在连接的URL中需要增加时区信息。另外我们还需要通过设置useSSLfalse来显式禁用SSL连接不然也会报关于 SSL 连接的错误。
改为如下
- 创建生成程序 GeneratorSqlmap.java 执行生成程序生成 mybatis 逆向工程
package cn.itcast.ssm.generator;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 java.io.File;import java.util.ArrayList;import java.util.List;public class GeneratorSqlmap {public void generator() throws Exception {List warnings new ArrayList();boolean overwrite true;//指定逆向工程配置文件File configFile new File("/Users/weixuqin/IdeaProjects/mybatis-generator/src/main/resources/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);}public static void main(String[] args) throws Exception {try {GeneratorSqlmap generatorSqlmap new GeneratorSqlmap();generatorSqlmap.generator();} catch (Exception e) {e.printStackTrace();}}}
- 生成后的目录如图所示
注
这里我遇到了一个问题自己有编写日志文件但是不知道为什么总是无法加载日志信息报如下信息查阅相关资料后也没能解决这个问题以后有时间自己会解决这个问题。
应用 mybatis 逆向工程文件
我们可以复制粘贴逆向工程中的项目到自己另外的项目中使用不推荐在原有项目中使用 mybatis generator 生成因为很容易发生命名冲突覆盖的问题。
这里我们将 ItemsMapper.java, ItemsMapper.xml, Items.java, ItemsExample.java 复制粘贴到我们原有项目中编写测试文件 ItemsMapperTest.java 查询数据库中 "笔记本" 的记录
package cn.itcast.ssm.test;import cn.itcast.ssm.mapper.ItemsMapper;import cn.itcast.ssm.po.Items;import cn.itcast.ssm.po.ItemsExample;import org.junit.Before;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import java.util.List;public class ItemsMapperTest {private ApplicationContext applicationContext;private ItemsMapper itemsMapper;//在 setUp这个方法得到 spring 容器Beforepublic void setUp() throws Exception{applicationContext new ClassPathXmlApplicationContext("classpath:config/spring/applicationContext.xml");itemsMapper (ItemsMapper) applicationContext.getBean("itemsMapper");}Testpublic void testSelectByExample(){ItemsExample itemsExample new ItemsExample();//通过criteria 构造查询条件ItemsExample.Criteria criteria itemsExample.createCriteria();criteria.andNameEqualTo("笔记本");//可能返回多条记录List list itemsMapper.selectByExample(itemsExample);System.out.println(list);}}
输出结果如下
这里我刚开始运行的时候始终找不到 selectByExample() 这个方法其实是因为找不到我的 mapper.xml 映射文件困惑了好久发现 mapper.xml 并没有发布到目标文件中idea下eclipse 下并没有这个问题接口类和映射文件放在同一目录下是允许的。
所以我们应该将映射文件放在 resourcs 目录下再在 mybatis 全局配置文件中加载映射文件再次执行上述测试文件便不会找不到我们的映射文件了。
转载于:https://www.cnblogs.com/weixuqin/p/9543454.html
【文章转自迪拜服务器 http://www.558idc.com/dibai.html处的文章,转载请说明出处】