1. 程式人生 > >SSM專案使用Mybatis通用mapper外掛tk.mybatis的用法

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();
	}
}