MyBatis_tkmapper

在项目中使用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=root
jdbc.password=****
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/demo?useUnicode=true&amp;characterEncoding=utf-8


#通用mapper插件
mapper.plugin=tk.mybatis.mapper.generator.MapperPlugin
mapper.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{}

大功告成!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值