SSM框架——使用 MyBatis Generator 生成代码,包括:Model、Dao、Mapping

本文介绍了如何利用MyBatis Generator在SSM框架中自动化生成Model、Dao和Mapping文件,从而简化开发工作。详细讲解了MBG的工作原理、前期准备(包括下载MBG、数据库驱动、编写配置文件)、生成代码的步骤以及常见错误的解决方案。还提供了代码预览和使用总结,强调了配置文件中标签的顺序和table标签的使用规则。
摘要由CSDN通过智能技术生成

基于 SSM 框架开发,Mybatis 属于半自动 ORM,如果每个数据表相关的 Model、Dao、Mapping 都要自己动手去写,是不是很麻烦呢?工作量最大的就是书写Mapping的映射文件,而且手动书写很容易出错。

这里就介绍一个用于 MyBatis 的代码生成工具 MyBatis Generator,MyBatis Generator  简称(MBG)是 MyBatis 和 iBATIS 的代码生成器。
它将生成所有版本的MyBatis的代码,以及版本2.2.0之后的iBATIS版本。它将内省数据库表(或许多表),并将生成可用于访问表的工件。这减少了设置对象和配置文件以与数据库表进行交互的最初麻烦。MBG旨在对简单的CRUD(创建,检索,更新,删除)的大量数据库操作产生重大影响。您仍然需要为连接查询或存储过程手动编写 SQL 和对象。更多请参考:MyBatis Generator (MBG) 代码生成器简介

本文参考:MyBatis Generator 代码生成器 快速入门指南

本文完整示例下载:MyBatis Generator 代码生成器+MySQL驱动+配置文件

工作原理

代码生成器需要一个实现 DatabaseMetaData 接口的 JDBC 驱动程序,尤其是 getColumns 和 getPrimaryKeys 方法。

通过 DatabaseMetaData 数据库元数据信息接口,可以获取数据库中有哪些表,表中有哪些列以及列的数据类型、长度、是否允许为空、注释,主键是什么等信息,根据这些信息再根据实体类(Entity 或 POJO)的格式、MyBatis 的 Mapper.xml 格式、Dao 层类的格式等生成对应的文件。

前期准备

1、下载 MyBatis Generator 

最新版本:MyBatis Generator Release 1.3.5

有关版本的更多信息请参考:MyBatis Generator中的新功能

2、下载数据库驱动程序

连接不同的数据库,需要使用对应的驱动程序。

针对 MySQL,我们需要下载 Connector/J,MySQL Connector / J是MySQL的官方JDBC驱动程序。

最新版本:Connector/J 5.1.44

3、编写配置文件

generatorConfig.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>
	<classPathEntry location="mysql-connector-java-5.1.30.jar" />

	<context id="DB2Tables" targetRuntime="MyBatis3">
		<!-- 指定生成的java文件的编码,没有直接生成到项目时中文可能会乱码 -->
        <property name="javaFileEncoding" value="UTF-8"/>
        <commentGenerator>
			<property name="suppressDate" value="true"/>
			<property name="suppressAllComments" value="true"/>
		</commentGenerator>
		<!--数据库链接URL,用户名、密码 -->
		<jdbcConnection driverClass="com.mysql.jdbc.Driver"
			connectionURL="jdbc:mysql://localhost:3306/db_test" userId="root"
			password="xxx">
		</jdbcConnection>

		<javaTypeResolver>
			<property name="forceBigDecimals" value="false" />
		</javaTypeResolver>

		<javaModelGenerator targetPackage="test.model"
			targetProject="./src">
			<property name="enableSubPackages" value="true" />
			<property name="trimStrings" value="true" />
		</javaModelGenerator>

		<sqlMapGenerator targetPackage="test.xml"
			targetProject="./src">
			<property name="enableSubPackages" value="true" />
		</sqlMapGenerator>

		<javaClientGenerator type="XMLMAPPER"
			targetPackage="test.dao" targetProject="./src">
			<property name="enableSubPackages" value="true" />
		</javaClientGenerator>

		<table tableName="base_area">
			
		</table>

	</context>
</generatorConfiguration>

注意:你使用的版本号可能与我的不同。classPathEntry 标签中的“mysql-connector-java-5.1.30.jar” 要改为对应的版本。jdbcConnection 数据库连接信息需要修改为你自己的实际的信息。table 标签必须存在,一个标签只能指定一个表,多个表可以存在多个 table 标签。

tableName 可以使用通配符 % 来匹配全部的表,例如:

	<table tableName="%">
		<generatedKey column="id" sqlStatement="Mysql"/>
	</table>

更多细节请参考:MyBatis Generator XML 配置文件参考

4、关于包的存放目录

将 mybatis-generator-core-1.3.5.jar,mysql-connector-java-5.1.30.jar,generatorConfig.xml 等文件放在同一个目录下,

参考我的目录结构:


注意:你使用的版本号可能与我的不同。src 目录需要你自己创建。生成的文件会按配置文件中指定的包名创建目录结构。

生成代码

1、打开终端

2、切换目录到 mybatis-generator-core-1.3.5.jar,mysql-connector-java-5.1.30.jar,generatorConfig.xml 等文件所在的目录

3、执行命令

$ java -jar mybatis-generator-core-1.3.5.jar -configfile generatorConfig.xml -overwrite
看到输出:

MyBatis Generator finished successfully.

就说明生成成功了。

常见错误:

你可能会遇到错误一:

Exception in thread "main" java.lang.RuntimeException: Cannot resolve classpath
entry: mysql-connector-java-5.1.30.jar
        at org.mybatis.generator.internal.util.ClassloaderUtility.getCustomClass
loader(ClassloaderUtility.java:49)
        at org.mybatis.generator.api.MyBatisGenerator.generate(MyBatisGenerator.
java:245)
        at org.mybatis.generator.api.MyBatisGenerator.generate(MyBatisGenerator.
java:189)
        at org.mybatis.generator.api.ShellRunner.main(ShellRunner.java:117)
Cannot resolve classpath entry: mysql-connector-java-5.1.30.jar
查看  generatorConfig.xml 文件所在的目录中是否存在名称为“mysql-connector-java-5.1.30.jar”的文件,

是不是你下载的版本和我用的不一致?改为对应的版本的文件名称就可以了。

错误二:

XML Parser Errors occurred:
XML Parser Error on line 1: 前言中不允许有内容。

在 Windows 下遇到这个问题,解决方法:采用无 BOM 格式编码


错误三:

The specified target project directory ./src does not exist

你需要手动创建一个目录。

代码预览

数据表结构

SET NAMES utf8;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
--  Table structure for `base_area`
-- ----------------------------
DROP TABLE IF EXISTS `base_area`;
CREATE TABLE `base_area` (
  `ID` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号',
  `AREA_NAME` varchar(255) DEFAULT NULL COMMENT '地区名称',
  `AREA_CODE` varchar(255) DEFAULT NULL COMMENT '地区编码',
  `PARENT_ID` bigint(20) DEFAULT NULL COMMENT '上级地区编号',
  `PLAT_MARK` bigint(20) DEFAULT NULL COMMENT '区域标识,也就是平台标识',
  `LEVEL` tinyint(4) DEFAULT '1' COMMENT '级别',
  `STATUS` tinyint(4) DEFAULT '1' COMMENT '是否可用、是否显示',
  `EXPAND` tinyint(4) DEFAULT '0' COMMENT '是否展开子节点,非0为展开。',
  PRIMARY KEY (`ID`),
  KEY `index2` (`PLAT_MARK`)
) ENGINE=InnoDB AUTO_INCREMENT=3514 DEFAULT CHARSET=utf8;

SET FOREIGN_KEY_CHECKS = 1;
生成的代码文件:

dao/BaseAreaMapper.java

package test.dao;

import java.util.List;
import org.apache.ibatis.annotations.Param;
import test.model.Ba
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值