一.准备工作
1.所需要的Jar包:
mybatis-generator-core-1.3.7.jar(也可以选择安装插件) https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core/1.3.7
mysql-connector-java-5.1.7-bin.jar-根据在自己数据库的版本选择下载 ,Oracle数据库也可在此链接页面搜索
https://mvnrepository.com/artifact/mysql/mysql-connector-java
log4j-1.2.17.jar
https://mvnrepository.com/artifact/log4j/log4j/1.2.17
也可查看官方介绍和文档有更加全面的介绍以及属性的解释:http://mybatis.org/generator/希望能帮到你
二.工程的创建
1.创建数据库,创建表(设计好字段),也可以选择自己已有的数据库。
2.创建Java Project,相关文件
- Eclipse ——File——New——Java Project(自定义工程名)——完成创建。
- 打开工程目录在src文件夹下创建包(com.***.mapper),(com.***.pojo)
- 创建lib(存放Jar包——Builed Path——Add to Build Path)文件夹
- 在src文件夹下创建log4j.properties文件
Global logging configuration
log4j.rootLogger=DEBUG, stdout
MyBatis logging configuration...
log4j.logger.org.mybatis.example.BlogMapper=TRACE
Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
- 在工程根目录下创建generatorContext.xml(可根据官方参考文档编写)
http://mybatis.org/generator/configreference/xmlconfig.html
可参考博客:https://blog.csdn.net/qq_33223299/article/details/80909236
可参考官方文档:http://mybatis.org/generator/configreference/xmlconfig.html
此代码中需要注意代码片段中:
1.Mysql/Oracle数据库连接的信息:驱动类、连接地址、用户名、密码。连接数据库,这是必须的,要不然怎么根据数据库的表生成代码呢。
2.指定要生成代码的位置,要生成的代码包括po类, mapper.xml和mapper.java
<sqlMapGenerator targetPackage="com.ssm.test.mapper"(要生成代码的位置) targetProject="SCKJ_Generator">
(本地全路径 D:\Java\SCKJ_Generator\src\com\ssm\test\mapper,项目路径:.\src\com\ssm\test\pojo)
( mac:./src-----win:.\src)
3.数据库中的表与代码中的表相匹配
注意:如果使用的是Oracle数据库,只需要注释掉Mysql 配置 使用Oracle配置就行了(注意库名,用户和密码).
<?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>
<context id="DB2Tables" targetRuntime="MyBatis3">
<commentGenerator>
<!-- 是否去除自动生成的注释 -->
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!-- Mysql数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection
driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/ssm?characterEncoding=utf8&useSSL=false"
userId="root"
password="123456">
</jdbcConnection>
<!--
<jdbcConnection driverClass="oracle.jdbc.OracleDriver"
connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:orcl"
userId="SCOTT"
password="Oracle123">
</jdbcConnection>
-->
<!-- 默认为false,把JDBC DECIMAL 和NUMERIC类型解析为Integer,为true时
把JDBC DECIMAL 和NUMERIC类型解析为java.math.BigDecimal -->
<javaTypeResolver >
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- targetProject:生成POJO类的位置 -->
<javaModelGenerator targetPackage="com.ssm.test.pojo" targetProject="SCKJ_Generator">
<!-- \src\com\ssm\test\pojo --><!--本地全路径 D:\Java\SCKJ_Generator\src\com\ssm\test\mapper-->
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- targetProject:mapper映射文件生成的位置 -->
<sqlMapGenerator targetPackage="com.ssm.test.mapper" targetProject="SCKJ_Generator">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- targetProject:mapper接口生成的的位置 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.ssm.test.mapper" targetProject="SCKJ_Generator">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!-- 指定数据表 -->(数据库中的表)
<table tableName="clazz"></table>
<table tableName="clazz_course_teacher"></table>
<table tableName="course"></table>
<table tableName="escore"></table>
<table tableName="exam"></table>
<table tableName="grade"></table>
<table tableName="grade_course"></table>
<table tableName="student"></table>
<table tableName="system"></table>
<table tableName="teacher"></table>
<table tableName="user"></table>
</context>
</generatorConfiguration>
- 创建:GeneratorSqlmap.java ,右键运行——Run As——Java Application,完成代码的生成。
package com.ssm.test;
import java.io.File;
import java.util.*;
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;
public class GeneratorSqlmap {
public void generator() throws Exception {
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);
}
// 执行main方法以生成代码
public static void main(String[] args) {
try {
GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap();
generatorSqlmap.generator();
} catch (Exception e) {
e.printStackTrace();
}
}
}
项目结构
运行结果
- 控制台(Console)
三.在此过程中遇到的问题
问题1
log4j:WARN No appenders could be found for logger (org.mybatis.generator.logging.LogFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Answer:额 忘记创建log4j.properties文件了
问题2
Answer: 此处可将targetProjicet=“工程名字”——targetProject=“SCKJ_Generator”>
代码中的路径问题全是我踩坑出来的 (3种) haha!我也现学!
<javaModelGenerator targetPackage="com.ssm.test.pojo" targetProject="SCKJ_Generator(工程名字)">
<!-- \src\com\ssm\test\pojo --><!--D:\Java\SCKJ_Generator\src\com\ssm\test\mapper-->
四.个人说明
此篇文章为个人在实践中的经历,在撰写中有借鉴他人的博客(如介意请联系我删除!QQ:910380566)
虽然花了几小时从坑中出来,我觉得学到一些东西同不错的。初次写作如有不足之处请谅解!有问题纠正也可以私我!谢谢!