MyBatis_tkmapper
来源:互联网 发布:w3cschool python 编辑:程序博客网 时间:2024/06/15 12:06
在项目中使用MBG,tkmapper和pageHelper可以极大的提高开发效率,单表的增删改查都可以很方便的实现
本文参考:
maven的generatorConfig.xml文件详解:http://git.oschina.net/free/Mapper
本文以idea+maven+mysql作为参照,按步骤说明如何使用tkmapper
1.导入jar包
<!-- mybatis generator插件 --><dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.2</version> <scope>compile</scope> <optional>true</optional></dependency><!-- 通用Mapper 及其依赖--><dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper</artifactId> <version>${mapper.version}</version></dependency><dependency> <groupId>javax.persistence</groupId> <artifactId>persistence-api</artifactId> <version>1.0</version></dependency><!-- 分页插件 --><dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>${pagehelper.version}</version></dependency><!-- 数据库依赖 --><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version></dependency>
其中的mapper.version 和 pagehelper.version 是在pom.xml的 properties 属性中配置,如下:
<properties> <!-- 通用mapper版本 --> <mapper.version>3.2.1</mapper.version> <!-- pageHelper版本 --> <pagehelper.version>4.0.1</pagehelper.version> <!-- mysql版本号 --> <mysql.version>5.1.36</mysql.version></properties>
2.加入MBG插件
pom.xml文件:
<build> <!-- 一键生成插件 --> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>${jdk.version}</source> <target>${jdk.version}</target> </configuration> </plugin> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> <configuration> <configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile> <overwrite>true</overwrite> <verbose>true</verbose> </configuration> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version> </dependency> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper</artifactId> <version>${mapper.version}</version> </dependency> </dependencies> </plugin> </plugins></build>
这其中的 jdk.version 也是在 properties 属性中配置的,同 步骤1 中一样
<properties> ... <jdk.version>1.8</jdk.version> ...</properties>
而 basedir 则是maven自带的变量,指的是当前项目的实际路径,比如:D:/ideaworkspace/demo
做完这一步,相当于在maven中加入了插件generator,在idea的 MavenProject中就可以看到插件了
3.编辑generatorConfig.xml文件
这里就不作详细说明了,我在文章开始处也作了说明,直接看大神写的详细的配置文档就行,我贴一下自己的配置文件,都是最基础的。
在 src/main/resource下,我创建了一个generator目录,用来存放这个配置文件
<?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> <!-- 引入外部配置文件 --> <properties resource="init.properties"></properties> <!-- 指定数据库连接驱动,如果项目引入了mysql驱动jar,就可以不写 --> <!--<classPathEntry location="..."></classPathEntry>--> <context id="MysqlContext" targetRuntime="MyBatis3Simple" defaultModelType="flat"> <property name="javaFileEncoding" value="UTF-8"/> <property name="beginningDelimiter" value="`"/> <property name="endingDelimiter" value="`"/> <!-- 引入插件 tkmapper --> <plugin type="${mapper.plugin}"> <property name="mappers" value="${mapper.Mapper}"/> </plugin> <!-- 注释 --> <commentGenerator> <property name="suppressDate" value="true"/> </commentGenerator> <jdbcConnection driverClass="${jdbc.driverClass}" connectionURL="${jdbc.url}" userId="${jdbc.user}" password="${jdbc.password}"> </jdbcConnection> <javaModelGenerator targetPackage="${targetModelPackage}" targetProject="${targetJavaProject}"></javaModelGenerator> <sqlMapGenerator targetPackage="${targetXmlPackage}" targetProject="${targetResourceProject}"/> <javaClientGenerator type="XMLMAPPER" targetPackage="${targetMapperPackage}" targetProject="${targetJavaProject}"/> <table tableName="bill"></table> </context></generatorConfiguration>
做几点说明:
1.这个配置文件的各个属性配置是有次序的,不能颠倒,
2.引入外部的配置文件,默认是从当前项目路径,也可以理解为是从 src/main/resource 下找的,所以我的 initproperties配置文件是放在 src/main/resource 根路径下的。
init.properties:
#mysql数据库jdbc.user=rootjdbc.password=****jdbc.driverClass=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://127.0.0.1:3306/demo?useUnicode=true&characterEncoding=utf-8#通用mapper插件mapper.plugin=tk.mybatis.mapper.generator.MapperPluginmapper.Mapper=tk.mybatis.mapper.common.Mapper
3.在pom.xml文件中配置生成mapper,dao,model等文件的位置,同样是在 properties 属性中
<properties> ... <!--java接口和实体类--> <targetJavaProject>${basedir}/src/main/java</targetJavaProject> <targetMapperPackage>com.study.mybatis.dao</targetMapperPackage> <targetModelPackage>com.study.mybatis.model</targetModelPackage> <!--xml路径--> <targetResourceProject>${basedir}/src/main/resources/mybatis</targetResourceProject> <targetXmlPackage>mapper</targetXmlPackage> ...</properties>
如上,我将mapper.xml文件放在 src/main/resource/mybatis/mapper 文件夹下
4.在 Spring中配置 tkmapper
<!-- 集成通用mapper--><bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.study.mybatis.dao"/> <!-- 3.2.2版本新特性,markerInterface可以起到mappers配置的作用,详细情况需要看Marker接口类 --> <property name="markerInterface" value="com.study.base.mapper.MyMapper"/> <!-- 通用Mapper通过属性注入进行配置,默认不配置时会注册Mapper<T>接口 --> <property name="properties"> <value> mappers=tk.mybatis.mapper.common.Mapper,tk.mybatis.mapper.common.special.InsertListMapper </value> </property></bean>
说明:为了方便开发,我们可以自己自定义MyMapper继承Mapper和 MySqlMapper
public interface MyMapper<T> extends Mapper<T>, MySqlMapper<T> {}
配置完以上4步,在maven中插件 mybatis-generator:generate(就在这篇文章唯一的一个图内),就可以生成对应着数据库表的dao文件,mapper文件和model文件了
5.需要注意的事项
1.在4中, 我自定义了一个接口MyMapper,目的是让其他mapper文件继承这个接口,但是使用MBG生成的dao文件默认继承的是Mapper接口,如下:
public interface BillMapper extends Mapper<Bill> {}
这个时候运行项目会报错,需要将其改为继承我们自己的MyMapper
public interface BillMapper extends MyMapper<Bill> {}
2. 如何使用MyMapper??
继承 Mapper 和 MySqlMapper的自定义 MyMapper接口,提供了大量写好的单表增删该查方法,我们可以写一个baseService 然后让其他Service继承BaseService
public interface IBaseService<T> { T selectByKey(Object key); List<T> selectByExample(Object example); List<T> selectAll(); int save(T object); int saveAll(List<T> list); int update(T object); int updateNotNull(T object); int deleteByKey(Object key); int deleteByExample(T object);}
实现这个接口
public class BaseServiceImpl<T> implements IBaseService<T> { @Autowired private MyMapper<T> mapper; @Override public T selectByKey(Object key) { return mapper.selectByPrimaryKey(key); } ......}
写完这些之后,我们自己的Service接口继承IBaseService,接口实现类继承BaseServiceImp,这样就省去了单表CRUD的书写了
public interface IBillService extends IBaseService<Bill>{}public class BillServiceImpl extends BaseServiceImpl<Bill> implements IBillService{}
大功告成!!!!!
- MyBatis_tkmapper
- react-native run-android 报错
- UE4:actor运动过程中的几种检测
- CentOS 7.0下使用yum安装MySQL
- 【05】vue.js — v-cloak的使用
- Bandwidth Estimation in WebRTC (and the new Sender Side BWE)
- MyBatis_tkmapper
- Android百度地图默认位置中心点设置
- 浅谈JavaScript应用重构
- UVA 10790
- 素数筛法
- 表情上传到服务器(需转码)
- Linux学习---6
- STM8S003xx学习笔记(1):模拟 / 数字转换器(ADC)
- Spark 之 选择 Parquet for Spark SQL 的 5 大原因