mybatis 通用CRUD的替换方法


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

时间: 2024-08-01 12:12:07

mybatis 通用CRUD的替换方法的相关文章

Mybatis 通用Crud-设计思路

一 关于Mybatis 1.1 mybatis 的优点 1 轻量级ORM . 2 提供了完善的缓存机制. 3 mapper.xml 原声SQL更清晰灵活,且sql便于SQL调优. 4 resultType resultMap 处理返回结果集,与pojo解耦. 1.2 mybatis的使用体验 这里只将Mybatis不便于使用之处做以说明. 1 需要为每张表写一个dao接口和mapper.xml,这对于开发者来讲就不是很友好了,假设系统有30张业务表,呵呵. 2 虽然有generator 工具,可

MyBATIS使用CRUD

MyEclipse不提供自动生成,这里提供mybatis文件包和开发文档 http://download.csdn.net/detail/u010026901/7489319 自己建立配置文件, <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http

Mybatis通用Mapper

转:http://blog.csdn.net/isea533/article/details/41457529 极其方便的使用Mybatis单表的增删改查 项目地址:http://git.oschina.net/free/Mapper 优点? 不客气的说,使用这个通用Mapper甚至能改变你对Mybatis单表基础操作不方便的想法,使用它你能简单的使用单表的增删改查,包含动态的增删改查. 程序使用拦截器实现具体的执行Sql,完全使用原生的Mybatis进行操作. 你还在因为数据库表变动重新生成x

Mybatis 通用 Mapper 3.3.9 发布

MyBatis通用Mapper3 极其方便的使用MyBatis(更多标签)单表的增删改查 支持单表操作,不支持通用的多表联合查询 通用Mapper都可以极大的方便开发人员(腾云科技ty300.com).可以随意的按照自己的需要选择通用方法,还可以很方便的开发自己的通用方法. 3.3.9 - 2016-09-04 增加selectByIds和deleteByIds,用法见通用Mapper接口大全MBG插件支持beginningDelimiter和endingDelimiter(基础教程qkxue.

Mybatis通用Mapper(转)

转自:http://blog.csdn.net/isea533/article/details/41457529 极其方便的使用Mybatis单表的增删改查 项目地址:http://git.oschina.net/free/Mapper 优点? 不客气的说,使用这个通用Mapper甚至能改变你对Mybatis单表基础操作不方便的想法,使用它你能简单的使用单表的增删改查,包含动态的增删改查. 程序使用拦截器实现具体的执行Sql,完全使用原生的Mybatis进行操作. 你还在因为数据库表变动重新生成

【MyBatis】MyBatis实现CRUD操作

1.实现基本CRUD功能 使用MyBatis对数据完整的操作,也就是CRUD功能的实现.根据之前的内容,要想实现CRUD,只需要进行映射文件的配置. 范例:修改EmpMapper.xml文件,实现CRUD <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http:/

SpringBoot+Mysql+Mybatis+Mybatis通用mapper+PageHelper整合

pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4

Springboot集成mybatis通用Mapper与分页插件PageHelper(推荐)

插件介绍 通用 Mapper 是一个可以实现任意 MyBatis 通用方法的框架,项目提供了常规的增删改查操作以及 Example 相关的单表操作.通用 Mapper 是为了解决 MyBatis 使用中 90% 的基本操作,PageHelper则提供通用的分页查询功能,使用它们可以很方便的进行开发,可以节省开发人员大量的时间. 通用Mapper的GIT地址: https://gitee.com/free/Mapper 分页插件的GIT地址: https://github.com/pagehelp

UITextAttributeTextColor 的替换方法

UITextAttributeTextColor 的替换方法 UITextAttributeTextColor 已经在iOS7.0以后被推荐使用了,UITextAttributeTextColor = deprecated in iOS 7.0,改为推荐使用UITextAttributeTextColor类来代替,具体替换方法以及相关示例代码如下: - 使用UITextAttributeTextColor的方法源代码如下所示: // 3.设置导航栏主题 UINavigationBar *navB