标签:
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&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)。
标签:
原文地址:http://my.oschina.net/alexgaoyh/blog/405003