tk.mybatis的使用说明

tk.mybatis的使用用法说明

依赖

<dependency>
    <groupId>tk.mybatis</groupId>
    <artifactId>mapper-spring-boot-starter</artifactId>
    <version>2.0.0</version>
</dependency>

        <dependency>
            <groupId>javax.persistence</groupId>
            <artifactId>persistence-api</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper</artifactId>
            <version>3.4.2</version>
        </dependency>

前者包含了mybatis一些依赖,若ssm项目搭建好了,用后者就行。

实体类与Mapper改造

若属性与数据库字段对应不上需要用@Column注解对于,表名不一样同理用@Table,一样的无需添加,主键上需加@Id注解。

@Data
@Table(name = "t_order")
public class Order {
    /**
     * 
    CREATE TABLE orders(
        order_id INT PRIMARY KEY AUTO_INCREMENT,
        order_no VARCHAR(20), 
        price FLOAT
    );
     */

    //Order实体类中属性名和orders表中的字段名是不一样的
    @GeneratedValue(generator = "JDBC") // 自增的主键映射
    @Id
    @Column(name = "order_id")
    private int id;                //id===>order_id
    @Column(name = "order_no")
    private String orderNo;
    //若跟数据库字段一致可不写注解
    private Double price;
    }

Mapper接口需继承tk的Mapper<T>

import ssm.entity.Person;
import tk.mybatis.mapper.common.Mapper;

public interface PersonMapper extends Mapper<Person> {
}

xml可以内容为空,但最好加上结果集设置好与数据库字段对应关系(如果实体类属性与数据库字段不一致的话)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="ssm.dao.PersonMapper">
    <resultMap id="BaseResultMap" type="ssm.entity.Person">
        <id column="id" jdbcType="INTEGER" property="id" />
        <result column="name" jdbcType="VARCHAR" property="name" />
        <result column="description" jdbcType="VARCHAR" property="description" />
        <result column="creater" jdbcType="VARCHAR" property="creater" />
        <result column="create_time" jdbcType="DATE" property="createTime" />
        <result column="updater" jdbcType="VARCHAR" property="updater" />
        <result column="update_time" jdbcType="DATE" property="updateTime" />
    </resultMap>
</mapper>

报错解决

报错:java.lang.NoSuchMethodException: tk.mybatis.mapper.provider.base.BaseSelectProvider怎么办?

这种情况是MapperScan包的问题,mybatis与tk.mybatis都有这个,在此我们导包请导tk的这个包。

对于SpringBoot项目在Appliction启动类上使用MapperScan注解的,更改导包路径为。

import tk.mybatis.spring.annotation.MapperScan;

对于传统SSM项目,将mybatis的扫描配置器改成tk的即可

    <!-- DAO接口所在包名,Spring会自动查找其下的类 ,自动扫描了所有的XxxxMapper.xml对应的mapper接口文件,只要Mapper接口类和Mapper映射文件对应起来就可以了 -->
<!--    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">-->
    <bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="ssm.dao" />
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
    </bean>
目录导航
  • 依赖
  • 实体类与Mapper改造
  • 报错解决