tk.mybatis的使用说明
😂 这篇文章最后更新于1286天前,您需要注意相关的内容是否还可用。
目录导航
依赖
实体类与Mapper改造
报错解决
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>
留言评论
暂无留言