文档章节

mybatis 通用CRUD的替换方法

alexgaoyh
 alexgaoyh
发布于 2015/04/22 12:27
字数 900
阅读 1736
收藏 9

    http://git.oschina.net/alexgaoyh/MutiModule-parent    

代码此次变更较大,使用了mybatis-generator-maven-plugin 插件,把之前多模块项目中的domain部分删除,将这一部分代码整合到persise部分,原因是使用mybatis-generator-maven-plugin插件的时候,能够自动生成实体类,减少代码移动相关的工作量。(数据库逆向代码生成工具)


    前一段时间使用maven多模块项目整合了spring mybatis部分,最近在处理通用CRUD方法的时候,遇到了一系列问题,特写文章记录一下:

    网络上有很多通用CRUD方法的解决方案,增加DAO接口部分,动态拼接sql……,本文并不对这些方法做过多的介绍。

    之前用过一段hibernate(强类型的ORM),最近再转入mybatis的时候,发现mybatis可以理解为半ORM,通过xml书写sql来满足业务需求,如果想使用通用的CRUD方法的话,很多解决方案注入性太强了,所以找了好久,觉得使用 mybatis-generator-maven-plugin 能够很好地替代这种解决方案:

    1: 不改变mybatis的特点(接口,sql写到xml内部),新手拿到项目之后,能够很快上手;

    2: 简单的单表CRUD也能够实现;

    3: 减少代码量的书写,及时是自己编写了通用方法(泛型),也是需要自己编写相关的代码,继承相关的接口才能实现的,使用generator的话,能够大批量的减少代码书写;


    所以,最终选择了mybatis-generator-maven-plugin 来实现简单的单表CRUD方法。

    实现的话,最主要的代码分为如下两个部分:

    

<plugin>
				<groupId>org.mybatis.generator</groupId>
				<artifactId>mybatis-generator-maven-plugin</artifactId>
				<version>1.3.2</version>
				<configuration>
				    <verbose>true</verbose>
				    <overwrite>true</overwrite>
				</configuration>
			</plugin>



    

/src/main/resource 下创建 generatorConfig.xml文件:

注意修改一些数据库方法的配置,这样,在数据库里面生成相关的表结构之后,通过下面的配置,来映射相关的类文件/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="C:\Users\lenovo\.m2\repository\mysql\mysql-connector-java\5.1.21\mysql-connector-java-5.1.21.jar" />
    
	<context id="context1" targetRuntime="MyBatis3">
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
            connectionURL="jdbc:mysql://127.0.0.1:3306/mybatisTest?useUnicode=true&amp;characterEncoding=UTF-8"
            userId="root" password="alexgaoyh" />
            
        <javaModelGenerator targetPackage="com.alexgaoyh.MutiModule.persist.demo" targetProject="F:\eclipseWorkspace\MutiModule-parent\MutiModule-persist\src\main\java" />
        
        <sqlMapGenerator targetPackage="com.alexgaoyh.MutiModule.persist.demo" targetProject="F:\eclipseWorkspace\MutiModule-parent\MutiModule-persist\src\main\resources" />
        
        <javaClientGenerator targetPackage="com.alexgaoyh.MutiModule.persist.demo" targetProject="F:\eclipseWorkspace\MutiModule-parent\MutiModule-persist\src\main\java" type="XMLMAPPER" />
        
        <table schema="" tableName="demo" />
        
    </context>
	    
</generatorConfiguration>
<!-- 每次修改的部分为替换  targetPackage tableName 部分,对应数据库不同的表结构,不同的包名,自动映射出来相关的类文件-->



1: 数据库生成相关的表结构(表面demo)

2:Eclipse使用maven,项目右键,run as  执行 (mybatis-generator:generate) 如下图:




执行完毕之后,刷新项目:

红框标注的就是自动生成的相关文件: 其中这些文件能够很简单的满足单表CRUD的需求,也不用学习新的代码,简单容易,易上手。


具体在使用过程中,尽量记录下来每次修改xml部分的地方(如上图的 DemoMapper.xml 部分),这样,如果修改量少的话,表结构发生变更的话,直接重新生成相关的类文件/配置文件 即可。 避免mybatis这种,修改表结构之后(Demo.java DemoExample.java DemoMapper.xml ),很多文件都需要更改的情况(ORM)。


© 著作权归作者所有

共有 人打赏支持
alexgaoyh

alexgaoyh

粉丝 76
博文 82
码字总数 65212
作品 1
郑州
后端工程师
私信 提问
加载中

评论(1)

i
itxx2016
推荐国内最著名的mybatis代码生成网站 --- fwjava.com
无需任何安装配置,直接在线生成,且十分规范好用.
baomidou/mybatis-plus

为简化开发工作、提高生产率而生 简介 | Intro Mybatis 增强工具包 - 只做增强不做改变,简化操作 技术讨论 QQ 群 576493122 优点 | Advantages 无侵入:Mybatis-Plus 在 Mybatis 的基础上进...

baomidou
2016/01/25
0
0
baomidou/mybatisplus-spring-boot-starter

#mybatisplus-spring-boot-starter mybatisplus-spring-boot-starter 为 Mybatis-Plus 快速集成 spring-boot 简化配置而生,不再需拿 MyBatis 和 Hibernate 相比,mybatis-plus 作为 mybati......

baomidou
2017/05/05
0
0
Spring整合MybatisPlus学习笔记

简介 MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生 特性 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,...

锦城学长
2018/10/01
0
0
在Spring4中使用通用Mapper

在Spring4中使用通用Mapper Spring4增加了对泛型注入的支持,这个特性对通用Mapper来说,非常的有用,可以说有了这个特性,可以直接在Service中写,可以通过来实现通用的。 这篇文档主要讲解...

Liuzh_533
2014/12/12
0
29
mybatis-plus的使用 ------ 入门

前言: mybatis在持久层框架中还是比较火的,一般项目都是基于ssm。虽然mybatis可以直接在xml中通过SQL语句操作数据库,很是灵活。但正其操作都要通过SQL语句进行,就必须写大量的xml文件,很...

贪挽懒月
2018/08/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

activiti6+springboot连接mysql

application.properties spring.datasource.url=jdbc:mysql://130.51.23.249:3306/activiti6ui?characterEncoding=utf8&useSSL=truespring.datasource.username=saspring.datasource.passw......

Danni3
21分钟前
1
0
PHP教程中验证正整数is_int($value+0),为什么要这样?

最近学习PHP应用,其中有一段是要验证变量是否为正整数,除了is_numeric($value)外,还要加上is_int($value+0)且($value+0) > 0,为什么还要 +0呢?直接验证$value不行吗? ,只要 is_int($...

dragon_tech
32分钟前
1
0
毕业季,我的Linux求职之路

秋招终于告一段落了,本硕的七年求学之路也快画上了句号。回首求职的这一段日子,痛苦并快乐着。感谢所有陪伴着我走过这一段路程的同学,所有的辛酸都值得铭记。求职的过程中在网上看了很多的...

xiangyunyan
39分钟前
1
0
springMvc异常处理定制化

1、扩展SimpleMappingExceptionResolver来实现springMvc的定制 import org.apache.commons.codec.binary.Base64;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.......

重城重楼
今天
4
0
OSChina 周四乱弹 —— Im fine

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @LuckyXu:分享戴荃的单曲《小荃拳之歌》: 手机党少年们想听歌,请使劲儿戳(这里) 今天遇到倒霉事了, @ FalconChen :电梯宕机了我靠 但是...

小小编辑
今天
884
19

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部