SSM项目使用Mybatis通用mapper插件tk.mybatis的用法

Mybatis 与 Hibernate的一个很大的区别就是Mybatis所有的数据库操作语句都需要自己写,对于简单的单表操作来说是比较烦琐的。因此有人就开发了tk.mybatis插件,通过这个插件,你可以省略许多简单的单表数据库操作语句而直接调用相对应的dao方法。在SSM项目中配置和使用tk.mybatis插件的用法如下:
1、在pom.xml文件中引入依赖

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

2、在spring的dao层配置中进行配置,将原本的配置扫描Dao接口包进行如下修改。
修改前:

   <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
		<property name="basePackage" value="xxx.xxx.xxx.dao"></property>
	</bean>

修改后:

   <bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
		<property name="basePackage" value="xxx.xxx.xxx.dao"></property>
	</bean>

3、书写一个基本dao接口(这个类不要放在xxx.xxx.xxx.dao包中),作用是供以后的dao接口继承。继承了这个基本dao接口的接口就具有大多数单表操作方法供service层调用。代码如下:

package xxx.xxx.xxx.util;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;

public interface BaseMapper<T> extends Mapper<T>,MySqlMapper<T>{
}

4、在xxx.xxx.xxx.entity包中,进行数据库表和类的映射(对于数据库表中不存在的变量要用@Transient注解进行忽略映射,否则会报在数据库表找不到对应字段的错误),代码如下:

package xxx.xxx.xxx.entity;

import java.util.List;

import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;

@Table(name = "tb_area")
public class Area {
	
	@Id
	private Long areaId;
	
	@Column(name = "area_name")
	private String areaName;
	
	@Column(name = "area_desc")
	private String areaDesc;

    @Transient
	private List list;

	public Long getAreaId() {
		return areaId;
	}

	public void setAreaId(Long areaId) {
		this.areaId = areaId;
	}

	public String getAreaName() {
		return areaName;
	}

	public void setAreaName(String areaName) {
		this.areaName = areaName;
	}

	public String getAreaDesc() {
		return areaDesc;
	}

	public void setAreaDesc(String areaDesc) {
		this.areaDesc = areaDesc;
	}
}

5、之后的xxx.xxx.xxx.dao包中的dao接口继承了上面的基本接口就可以拥有供service层调用调用的大多数单表操作方法了,代码如下:

package xxx.xxx.xxx.dao;

import org.apache.ibatis.annotations.Mapper;
import xxx.xxx.xxx.entity.Area;
import xxx.xxx.xxx.util.BaseMapper;

@Mapper
public interface AreaDao extends BaseMapper<Area>{
}
package xxx.xxx.xxx.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import xxx.xxx.xxx.dao.AreaDao;
import xxx.xxx.xxx.entity.Area;
import xxx.xxx.xxx.service.AreaService;

@Service
public class AreaServiceImpl implements AreaService {

	@Autowired
	AreaDao areaDao;

	@Override
	public List<Area> queryArea() {
		return areaDao.selectAll();
	}
}
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值