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 改造
报错解决
目录
依赖
实体类与 Mapper 改造
报错解决