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&amp;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{}

大功告成!!!!!

原创粉丝点击