SSM项目中自动生成反向工程

来源:互联网 发布:鲁迅体 知乎 编辑:程序博客网 时间:2024/06/07 03:33

使用ssm项目编写代码时,可能会由于数据库表繁多而增加很多的工作量
所以我们使用代码和配置文件独立实现反向生成的工具类
所依赖的jar包
log4j-1.2.17.jar //log4j
mybatis-3.2.7.jar //mybatis核心包
mybatis-generator-core-1.3.2.jar // 反向生成核心包
ojdbc6.jar //数据库驱动包
工程的目录结构如下图:
这里写图片描述

package com.test.niubai;import java.io.File;import java.util.ArrayList;import java.util.List;import org.mybatis.generator.api.MyBatisGenerator;import org.mybatis.generator.config.xml.ConfigurationParser;import org.mybatis.generator.internal.DefaultShellCallback;/** *  * @author liushao * 自动生成 实体类   mapper  和mapper.xml *  */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);  org.mybatis.generator.config.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();  } }}

除此之外我们还需要一个配置文件,用以连接数据库以及确定代码生成的位置
注意:配置文件要放在工程目录下,与src同级

<?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="testTables" targetRuntime="MyBatis3">        <commentGenerator>            <!-- 是否去除自动生成的注释 true:是 : false:否 -->            <property name="suppressAllComments" value="true" />        </commentGenerator>        <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->        <!-- <jdbcConnection driverClass="com.mysql.jdbc.Driver"            connectionURL="jdbc:mysql://localhost:3306/mybatis" userId="root"            password="mysql">        </jdbcConnection>-->        <jdbcConnection driverClass="oracle.jdbc.OracleDriver"            connectionURL="jdbc:oracle:thin:@localhost:1521:orcl"             userId="myshoes"            password="admin">        </jdbcConnection>         <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和             NUMERIC 类型解析为java.math.BigDecimal -->        <javaTypeResolver>            <property name="forceBigDecimals" value="false" />        </javaTypeResolver>        <!-- targetProject:生成PO类的位置 -->        <javaModelGenerator targetPackage="com.shoes.entity"            targetProject=".\src">            <!-- enableSubPackages:是否让schema作为包的后缀 -->            <property name="enableSubPackages" value="false" />            <!-- 从数据库返回的值被清理前后的空格 -->            <property name="trimStrings" value="true" />        </javaModelGenerator>        <!-- targetProject:mapper映射文件生成的位置 -->        <sqlMapGenerator targetPackage="com.shoes.mapper"             targetProject=".\src">            <!-- enableSubPackages:是否让schema作为包的后缀 -->            <property name="enableSubPackages" value="false" />        </sqlMapGenerator>        <!-- targetPackage:mapper接口生成的位置 -->        <javaClientGenerator type="XMLMAPPER"            targetPackage="com.shoes.mapper"             targetProject=".\src">            <!-- enableSubPackages:是否让schema作为包的后缀 -->            <property name="enableSubPackages" value="false" />        </javaClientGenerator>        <!-- 指定数据库表 -->        <table tableName="administrator"></table>        <table tableName="permission"></table>        <table tableName="repertory"></table>        <table tableName="categorys"></table>        <table tableName="salshop"></table>        <table tableName="userss"></table>        <table tableName="receiving"></table>        <table tableName="ordersitem"></table>        <table tableName="orders"></table>        <table tableName="cart"></table>        <table tableName="comments"></table>        <table tableName="visites"></table>        <table tableName="sal"></table>        <!-- <table schema="" tableName="sys_user"></table>        <table schema="" tableName="sys_role"></table>        <table schema="" tableName="sys_permission"></table>        <table schema="" tableName="sys_user_role"></table>        <table schema="" tableName="sys_role_permission"></table> -->        <!-- 有些表的字段需要指定java类型         <table schema="" tableName="">            <columnOverride column="" javaType="" />        </table> -->    </context></generatorConfiguration>

这些都完成后,在工具类中右键运行就可以。
你就会很神奇的发现所有的Mapper接口和xml文件都写好了!!
如果没有出现实体类,尝试右键刷新工程。

这样做的弊端是,只能生成单个表的相关数据库操作,无法映射数据库之间的关系。

阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 母牛排尿带血尿发烧怎么办 4岁发烧40度怎么办 狗狗拉肚子咳漱哮喘怎么办 拉肚子拉脱水人无力怎么办 孕中期拉稀拉水怎么办 吃坏肚子拉稀水怎么办 手上起小疙瘩疼怎么办 手上长东西很痛怎么办 七八十斤猪拉稀怎么办 宝宝扁桃体化脓反复发烧怎么办 骑单车后膝盖痛怎么办 孩子一运动就喘怎么办 小孩晚上咳嗽很厉害怎么办 1岁宝宝夜里咳嗽怎么办 咳嗽咳的胸疼怎么办 儿童又咳又喘怎么办 咳嗽咳到胸口痛怎么办 咳嗽咳得肋骨疼怎么办 孕妇咳嗽咳得胸口疼怎么办 怀孕偏左侧宫腔怎么办 晨起活动后咳嗽怎么办 运动后乳房坠痛怎么办 嗓子痒咳嗽怎么办夜间最为难受 小孩鼻炎引起的咳嗽怎么办 跑完800米喉咙痒怎么办 过敏源总ige高怎么办 一岁宝宝咳嗽喘怎么办 宝宝又咳又喘怎么办 3岁宝宝有痰怎么办 小孩又咳又喘怎么办 宝宝有点吼和喘怎么办 气管里呛了辣油怎么办 玩手机手抖该怎么办 紧张到手抖做不了事该怎么办 做什么事手抖怎么办啊 跳舞时不会提气怎么办 啤酒喝多了手抖怎么办 头撞了一下头疼怎么办 头撞了个包怎么办 狗狗尿血不吃药怎么办 手机点击全选文字消失了怎么办