• 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();
        }
    
  • 相关阅读:
    [liu yanling]常用的测试工具
    [liu yanling]软件测试的过程
    [liu yanling]测试方法
    [Buffalo] 一些SQL函数
    [Stephen]C#中调用C++动态链接库
    [Jacky] 解决Ext.Net GridPanel 选择的行数据刷新后不能获取最新值
    [Tommas] dateadd() 函数用法
    [Tommas] UNION 和 UNION ALL 的区别
    文件I/O编程
    分房问题
  • 原文地址:https://www.cnblogs.com/yonyong/p/11298990.html
Copyright © 2020-2023  润新知