关闭

Mybatis逆向工程

标签: mybatis逆向工程
334人阅读 评论(0) 收藏 举报
分类:


Mybatis

 

逆向工程


Mybatis逆向工程

使用官方网站的mapper自动生成工具mybatis-generator-core-1.3.2来生成po类和mapper映射文件。

 

作用:mybatis官方提供逆向工程,可以使用它通过数据库中的表来自动生成Mapper接口和映射文件(单表增删改查)Po.

 

1.1 第一步:mapper生成配置文件:

在generatorConfig.xml中配置mapper生成的详细信息,注意改下几点:

 

1、 添加要生成的数据库表

2、 po文件所在包路径

3、 mapper文件所在包路径

 

配置文件如下:

<?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="admin">

</jdbcConnection>

<!-- <jdbcConnection driverClass="oracle.jdbc.OracleDriver"

connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:yycg"

userId="yycg"

password="yycg">

</jdbcConnection> -->

 

<!-- 默认false,把JDBC DECIMALNUMERIC类型解析为Integer,为true时把JDBC DECIMAL

NUMERIC 类型解析为java.math.BigDecimal -->

<javaTypeResolver>

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

</javaTypeResolver>

 

<!-- targetProject:生成PO类的位置-->

<javaModelGenerator targetPackage="cn.itcast.ssm.po"

targetProject=".\src">

<!-- enableSubPackages:是否让schema作为包的后缀-->

<property name="enableSubPackages" value="false" />

<!-- 从数据库返回的值被清理前后的空格-->

<property name="trimStrings" value="true" />

</javaModelGenerator>

        <!-- targetProject:mapper映射文件生成的位置-->

<sqlMapGenerator targetPackage="cn.itcast.ssm.mapper" 

targetProject=".\src">

<!-- enableSubPackages:是否让schema作为包的后缀-->

<property name="enableSubPackages" value="false" />

</sqlMapGenerator>

<!-- targetPackagemapper接口生成的位置-->

<javaClientGenerator type="XMLMAPPER"

targetPackage="cn.itcast.ssm.mapper" 

targetProject=".\src">

<!-- enableSubPackages:是否让schema作为包的后缀-->

<property name="enableSubPackages" value="false" />

</javaClientGenerator>

<!-- 指定数据库表 -->

<table tableName="items"></table>

<table tableName="orders"></table>

<table tableName="orderdetail"></table>

<table tableName="user"></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>

 

 

1.2 第二步:使用java类生成mapper文件:

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);

}

Public static void main(String[] args) throws Exception {

try {

GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap();

generatorSqlmap.generator();

} catch (Exception e) {

e.printStackTrace();

}

}

 

1.3 第三步:拷贝生成的mapper文件到工程中指定的目录中

1.3.1 Mapper.xml

Mapper.xml的文件拷贝至mapper目录内

1.3.2 Mapper.java

Mapper.java的文件拷贝至mapper目录内

 

注意:mapper xml文件和mapper.java文件在一个目录内且文件名相同。

 

1.4 第四步Mapper接口测试

 

学会使用mapper自动生成的增、删、改、查方法。

 

//删除符合条件的记录

int deleteByExample(UserExample example);

//根据主键删除

int deleteByPrimaryKey(String id);

//插入对象所有字段

int insert(User record);

//插入对象不为空的字段

int insertSelective(User record);

//自定义查询条件查询结果集

List<User> selectByExample(UserExample example);

//根据主键查询

UserselectByPrimaryKey(String id);

//根据主键将对象中不为空的值更新至数据库

int updateByPrimaryKeySelective(User record);

//根据主键将对象中所有字段的值更新至数据库

int updateByPrimaryKey(User record);

 

 

1.5 逆向工程注意事项

1.5.1 Mapper文件内容不覆盖而是追加

XXXMapper.xml文件已经存在时,如果进行重新生成则mapper.xml文件内容不被覆盖而是进行内容追加,结果导致mybatis解析失败。

解决方法:删除原来已经生成的mapper xml文件再进行生成。

Mybatis自动生成的pomapper.java文件不是内容而是直接覆盖没有此问题。

 

1.5.2 Table schema问题

下边是关于针对oracle数据库表生成代码的schema问题:

 

Schma即数据库模式,oracle中一个用户对应一个schema,可以理解为用户就是schema

当Oralce数据库存在多个schema可以访问相同的表名时,使用mybatis生成该表的mapper.xml将会出现mapper.xml内容重复的问题,结果导致mybatis解析错误。

解决方法:在table中填写schema,如下:

<table schema="XXXX" tableName=" " >

XXXX即为一个schema的名称,生成后将mapper.xmlschema前缀批量去掉,如果不去掉当oracle用户变更了sql语句将查询失败。

快捷操作方式:mapper.xml文件中批量替换:“from XXXX.”为空

 

Oracle查询对象的schema可从dba_objects中查询,如下:

select *from dba_objects

 

 

 

 

 

 

 

 

 

 

 

 

 

0
0
查看评论

mybatis学习笔记(18)-mybatis逆向工程

mybaits需要程序员自己编写sql语句,mybatis官方提供逆向工程,可以针对单表自动生成mybatis执行所需要的代码(mapper.java,mapper.xml、po..).企业实际开发中,常用的逆向工程方式:由数据库的表生成java代码。
  • h3243212
  • h3243212
  • 2016-03-02 12:35
  • 24857

mybatis逆向工程详解

逆向工程字面意思就是反向生成工程,和hibernate一样mybatis也有自己的逆向工程工具,hibernate的逆向生成我没有做过,不过我猜大概都已样,再说,hibernate的现在使用很少了,到了使用的时候再去用吧,使用逆向工程时,需要注意的是表之间的关系无法映射出来!也就是说mybatis的...
  • do_bset_yourself
  • do_bset_yourself
  • 2016-04-28 17:55
  • 28777

MyBatis框架的学习(七)——MyBatis逆向工程自动生成代码

MyBatis框架的学习(七)——MyBatis逆向工程自动生成代码什么是逆向工程MyBatis的一个主要的特点就是需要程序员自己编写sql,那么如果表太多的话,难免会很麻烦,所以mybatis官方提供了一个逆向工程,可以针对单表自动生成mybatis执行所需要的代码(包括mapper.xml、ma...
  • yerenyuan_pku
  • yerenyuan_pku
  • 2017-05-13 22:42
  • 7929

mybatis 的逆向工程

1      逆向工程 1.1  什么是逆向工程 mybaits需要程序员自己编写sql语句,mybatis官方提供逆向工程 可以针对单表自动生成mybatis执行所需要的代码(mapper.java,mapper.xm...
  • u012373815
  • u012373815
  • 2015-07-28 21:46
  • 20796

mybatis逆向工程(附源码)

源码github下载地址:https://github.com/wcyong/mybatisGeneratorCustom.git mybaits需要程序员自己编写sql语句,mybatis官方提供逆向工程 可以针对单表自动生成mybatis执行所需要的代码(mapper.java,mapper...
  • weixin_38009266
  • weixin_38009266
  • 2017-09-06 13:29
  • 1220

【MyBatis学习15】mybatis-generator生成逆向工程两种方式

本文博客地址:http://blog.csdn.net/soonfly/article/details/64499423 (转载请注明出处) mybatis官方提供了一个逆向工程包,可以针对数据库表自动生成mybatis执行所需要的Pojo、Mapper xml文件、Mapper Interface...
  • soonfly
  • soonfly
  • 2017-03-21 20:21
  • 6835

【Mybatis】简单实现mybatis逆向工程

之前做项目经常听说通过mybatis逆向工程直接生成代码,直接使用即可,但是mybatis是如何通过逆向工程生成代码的,一直不是很了解,最近通过一个小例子实现了一下,下面简单总结一下:    通过mybatis逆向工程自动生成*-mapper.java接口文件,model实体类,...
  • u013046097
  • u013046097
  • 2017-07-02 21:35
  • 1058

Mybatis逆向工程_使用maven

参考文档:http://blog.csdn.net/eson_15/article/details/51694684 一个大神写的gui:https://github.com/astarring/mybatis-generator-gui mybatis-generator有三种用法:命令行...
  • gebitan505
  • gebitan505
  • 2016-06-30 11:29
  • 7332

mybatis逆向工程(maven)

上面是逆向工程的一些项目路径 1.maven添加plugin org.mybatis.generator mybatis-generator-maven-plugin 1.3.2
  • modote9527
  • modote9527
  • 2017-04-03 23:06
  • 1951

mybatis的逆向工程

为了开发更方便mybatis提供了逆向工程,即我们程序员不用编写mapper接口以及mapper.xml文件,这些事情完全可以交给mybatis的工具来完成. 开发步骤: 1)导入mybatis的逆向工程的jar包mybatis-generator-core-1.3.2.jar(去官网下载)+m...
  • u014010769
  • u014010769
  • 2015-08-08 00:15
  • 3885
    个人资料
    • 访问:75203次
    • 积分:1464
    • 等级:
    • 排名:千里之外
    • 原创:61篇
    • 转载:3篇
    • 译文:5篇
    • 评论:15条
    欢迎关注


    博客专栏
    技术交流和分享
    工作邮箱:humf@vip.qq.com
    技术分享和交流QQ群:432135803
    微信公众号
    微信公众号
    分享到: 微信 更多
    2