当前位置: 首页 > news >正文

使用MyBatis Generator自动创建代码

由于MyBatis属于一种半自动的ORM框架,所以主要的工作就是配置Mapping映射文件,但是由于手写映射文件很容易出错,所以可利用MyBatis生成器自动生成实体类、DAO接口和Mapping映射文件。这样可以省去很多的功夫,将生成的代码copy到项目工程中即可。

有很多方式可以完成这些操作,我用过的一种比较简单的方式就是用命令行的方式去生成。

生成代码需要的文件和jar包:
需要的文件

上面的文件的下载地址:http://download.csdn.net/download/qq_34409900/10160503
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.9.jar" />

  <context id="DB2Tables" targetRuntime="MyBatis3">
        <commentGenerator>    
            <property name="suppressDate" value="true"/>    
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->    
            <property name="suppressAllComments" value="false"/>    
        </commentGenerator>
  <!--数据库链接URL,用户名、密码 -->    
    <jdbcConnection driverClass="com.mysql.jdbc.Driver"
        connectionURL="jdbc:mysql://127.0.0.1/db_my"
        userId="root"
        password="密码">
    </jdbcConnection>

    <javaTypeResolver >
      <property name="forceBigDecimals" value="false" />
    </javaTypeResolver>
<!-- 生成模型的包名和位置-->  
    <javaModelGenerator targetPackage="com.my.pojo" targetProject="src">
      <property name="enableSubPackages" value="true" />
      <property name="trimStrings" value="true" />
    </javaModelGenerator>
<!-- 生成映射文件的包名和位置-->  
    <sqlMapGenerator targetPackage="com.my.mapping"  targetProject="src">
      <property name="enableSubPackages" value="true" />
    </sqlMapGenerator>
 <!-- 生成DAO的包名和位置-->   
    <javaClientGenerator type="XMLMAPPER" targetPackage="com.my.Dao"  targetProject="src">
      <property name="enableSubPackages" value="true" />
    </javaClientGenerator>
<!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名--> 
    <table tableName="user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
    </table>

  </context>
</generatorConfiguration>

当以上这些完成之后,只需要打开控制台,进入lib目录下,执行脚本:

java -jar mybatis-generator-core-1.3.2.jar -configfile generatorConfig.xml -overwrite

这样在生成之后,就可以在src目录下找到相应的文件夹,每个表格都会对应三个文件(实体类、接口、配置文件)。

相关文章:

  • 当装了两个tomcat后,修改tomcat端口
  • Linux strace命令
  • mybatis深入理解之 # 与 $ 区别以及 sql 预编译
  • Spring定时任务,Spring4整合quartz2.2,quartz-scheduler定时任务
  • orcal数据库的主键的自动增长
  • 虚拟主机通过修改.htaccess将入口重定向到public文件夹
  • 从orcal库中的B表复制数据到A表
  • js或jquery如何获取父级、子级、兄弟元素(包括祖级、孙级等)
  • html 页面清浏览器缓存
  • 用IDEA搭建一个简单的spring boot用例
  • 缓存更新的机制
  • puppet报告系统dashboard以及puppet+nginx
  • ArrayList的特性
  • CentOS 7.0安装配置LAMP服务器(Apache+PHP+MariaDB)
  • LinkedList的特性
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • 2018一半小结一波
  • Brief introduction of how to 'Call, Apply and Bind'
  • css的样式优先级
  • es的写入过程
  • HTTP请求重发
  • js递归,无限分级树形折叠菜单
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • Mysql优化
  • React中的“虫洞”——Context
  • 从setTimeout-setInterval看JS线程
  • 复杂数据处理
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 一个完整Java Web项目背后的密码
  • ​比特币大跌的 2 个原因
  • ​低代码平台的核心价值与优势
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #pragma预处理命令
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (11)MSP430F5529 定时器B
  • (C语言)fgets与fputs函数详解
  • (编译到47%失败)to be deleted
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (学习日记)2024.02.29:UCOSIII第二节
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (转)项目管理杂谈-我所期望的新人
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .net core 连接数据库,通过数据库生成Modell
  • .net core控制台应用程序初识
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .net中调用windows performance记录性能信息
  • /*在DataTable中更新、删除数据*/
  • @ModelAttribute 注解
  • @Transaction注解失效的几种场景(附有示例代码)
  • @在php中起什么作用?
  • [ 英语 ] 马斯克抱水槽“入主”推特总部中那句 Let that sink in 到底是什么梗?