引言
Mybatis 與 Hibernate的一個很大的區別就是Mybatis所有的數據庫操作語句都需要自己寫,對於簡單的單表操作來說是比較煩瑣的。因此有人就開發了tk.mybatis插件,通過這個插件,你可以省略許多簡單的單表數據庫操作語句而直接調用相對應的dao方法。在SSM項目中配置和使用tk.mybatis插件的用法如下:
start
1、在pom.xml文件中引入依賴
<!-- tk mybatis Begin -->
<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>
<!-- tk mybatis End -->
在spring的dao層配置中進行配置,將原本的配置掃描Dao接口包進行如下修改。說白了就是org改成tk。。。。 注意,只要改這一處就好了,其他地方例如sqlsession的bean牽扯到了這個org.mybatis.......不需要改,只改下面這一處
修改前
<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接口(這個類不能被MapperScanner掃描到,這個類不要放在xxx.xxx.xxx.dao包中),作用是供以后的dao接口繼承。繼承了這個基本dao接口的接口就具有大多數單表操作方法供service層調用。代碼如下:
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注解進行忽略映射,否則會報在數據庫表找不到對應字段的錯誤),我目前沒加沒報錯,還是加上吧,代碼如下:
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層調用調用的大多數單表操作方法了,代碼如下:
import cn.lianwei.yonyong.pojo.Info;
import cn.lianwei.yonyong.tk.BaseMapper;
import org.springframework.stereotype.Repository;
import java.util.ArrayList;
@Repository
public interface InfoDao extends BaseMapper<Info>{
//查詢所有信息
public ArrayList<Info> queryInfo();
}
6、可以使用了
@Service
public class InfoServiceImpl implements InfoService {
@Autowired
InfoDao infoDao;
@Override
public ArrayList<Info> queryInfo() {
return (ArrayList<Info>) infoDao.selectAll();
}