SSM-配置tkmybatis

Posted yonyong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSM-配置tkmybatis相关的知识,希望对你有一定的参考价值。

引言
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();
    

以上是关于SSM-配置tkmybatis的主要内容,如果未能解决你的问题,请参考以下文章

导入ssm项目时,项目基本的配置文件

SSM的整合

SSM框架整合——源码超详细(IDEA 搭建 ssm 项目)

SSM基础配置

SSM整合(配置文件版)

SSM新征程-第一个SSM