SSM框架中mybatis接口测试工具类_mabatis 分支 检测工具-程序员宅基地

技术标签: 工具使用  测试工具  JAVA应用层  

工具类如下:
注意“./xml/mybatis-config.xml”指的是项目目录中mybatis的配置路径

package base;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.Reader;
import java.sql.Connection;

/**
 * mybatis工具类
 @author panda
 *
 */
public class MybatisUtil {
    

    private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<SqlSession>();
    private static SqlSessionFactory sqlSessionFactory;
    static{
        try {
            Reader reader = Resources.getResourceAsReader("./xml/mybatis-config.xml");
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
        } catch (IOException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }
    private MybatisUtil() {}

    public static SqlSession getSqlSession(){
        SqlSession sqlSession = threadLocal.get();
        if(sqlSession == null){
            sqlSession = sqlSessionFactory.openSession();
            threadLocal.set(sqlSession);
        }
        return sqlSession;
    }

    public static void closeSqlSession(){
        SqlSession sqlSession = threadLocal.get();
        if(sqlSession != null){
            sqlSession.close();
            threadLocal.remove();
        }
    }

    public static void main(String[] args) {
        Connection conn = MybatisUtil.getSqlSession().getConnection();
        System.out.println(conn!=null ? "连接成功" : "连接失败");
    }
}

mybatis-config.xml 的配置:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!-- 
     | 全局配置设置
     |
     | 可配置选项                                        默认值, 描述
     |
     | aggressiveLazyLoading     true, 当设置为‘true’的时候,懒加载的对象可能被任何懒属性全部加载。否则,每个属性都按需加载。
     | multipleResultSetsEnabled true, 允许和不允许单条语句返回多个数据集(取决于驱动需求)
     | useColumnLabel            true, 使用列标签代替列名称。不同的驱动器有不同的作法。参考一下驱动器文档,或者用这两个不同的选项进行测试一下。
     | useGeneratedKeys          false, 允许JDBC 生成主键。需要驱动器支持。如果设为了true,这个设置将强制使用被生成的主键,有一些驱动器不兼容不过仍然可以执行。
     | autoMappingBehavior       PARTIAL, 指定MyBatis 是否并且如何来自动映射数据表字段与对象的属性。PARTIAL将只自动映射简单的,没有嵌套的结果。FULL 将自动映射所有复杂的结果。
     | defaultExecutorType       SIMPLE, 配置和设定执行器,SIMPLE 执行器执行其它语句。REUSE 执行器可能重复使用prepared statements 语句,BATCH执行器可以重复执行语句和批量更新。
     | defaultStatementTimeout   null, 设置一个时限,以决定让驱动器等待数据库回应的多长时间为超时
     | -->
    <settings>
        <!-- 这个配置使全局的映射器启用或禁用缓存 -->
        <setting name="cacheEnabled" value="true" />
        <!-- 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载 -->
        <setting name="lazyLoadingEnabled" value="true" />
        <setting name="multipleResultSetsEnabled" value="true" />
        <setting name="useColumnLabel" value="true" />
        <setting name="defaultExecutorType" value="REUSE" />
        <setting name="defaultStatementTimeout" value="25000" />
    </settings>

    <!-- 查询对象别名配置 -->
    <typeAliases>
        <!-- 
        <typeAlias alias="taskVo" type="xxx.vo.TaskVo" />
         -->
    </typeAliases>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/xxxx"/>
                <property name="username" value="xxxx"/>
                <property name="password" value="xxxx"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/blog/ifootage/mapper/xml/FeedsMapper.xml"/>
    </mappers>
</configuration>

关联的的feedsMapper接口与实体类

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.blog.ifootage.mapper.FeedsMapper">

    <!--获取用户列表-->
    <select id="selectFeedsById" resultType="com.blog.ifootage.entity.Feeds" parameterType="java.lang.Integer">
    SELECT * FROM mto_feeds WHERE  author_id = #{authorId}
    </select>


</mapper>
package com.blog.ifootage.entity;

import com.baomidou.mybatisplus.activerecord.Model;

import java.io.Serializable;
import java.util.Date;


/**
 * <p>
 * 
 * </p>
 *
 * @author panda
 * @since 2017-06-15
 */
//@TableName("mto_feeds")
public class Feeds extends Model<Feeds> {

    private static final long serialVersionUID = 1L;

    private Long id;

//  @TableField("author_id")
    private Integer author_id;

    private Date created;

//  @TableField("own_id")
    private Integer own_id;

//  @TableField("post_id")
    private Integer post_id;

    private Integer type;


    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Date getCreated() {
        return created;
    }

    public void setCreated(Date created) {
        this.created = created;
    }

    public Integer getType() {
        return type;
    }

    public void setType(Integer type) {
        this.type = type;
    }

    @Override
    protected Serializable pkVal() {
        return this.id;
    }

    public Integer getAuthor_id() {
        return author_id;
    }

    public void setAuthor_id(Integer author_id) {
        this.author_id = author_id;
    }

    public Integer getOwn_id() {
        return own_id;
    }

    public void setOwn_id(Integer own_id) {
        this.own_id = own_id;
    }

    public Integer getPost_id() {
        return post_id;
    }

    public void setPost_id(Integer post_id) {
        this.post_id = post_id;
    }
}

开始MyBatis的接口测试了

/**
 * Created by pengdan on 2017/10/14.
 */
public class Test1 {
    

    @Test
    public void select(){
        SqlSession sqlSession = null;
        try {
            sqlSession = MybatisUtil.getSqlSession();
            List<Feeds> i = sqlSession.selectList("com.blog.ifootage.mapper.FeedsMapper.selectFeedsById",20);
            System.out.println("本次操作影响"+i+"行数据");
            sqlSession.commit();
        } catch (Exception e) {
            e.printStackTrace();
            sqlSession.rollback();
        }
        finally{
            MybatisUtil.closeSqlSession();
        }
    }
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dodan/article/details/78235642

智能推荐

react router 配置404页面_react router 404-程序员宅基地

文章浏览阅读7.3k次,点赞3次,收藏7次。react router 配置404页面使用Vue相关的技术栈2年左右了,在路由管理上一直用的比较得心应手,现在的项目使用react开发,路由自然也就切换到了react router,所用版本为react router 4在Vue router配置中,我们可以很简单的配置出404页面使用通配符 * 号匹配所有路由,并将此配置放在数组的最末端,当前面的路由都匹配不上时,就会匹配到 * 号,然后..._react router 404

[蓝桥杯][2017年第八届真题]青蛙跳杯子_青蛙跳杯子-第八届蓝桥省赛-c组-程序员宅基地

文章浏览阅读168次。题目链接:青蛙跳杯子解题思路: 从第一个空杯子开始宽搜,每次前进1、2、3步判断每次的状态是否合法,如果合法就放入队列。#include<bits/stdc++.h>#define x first#define y second#define mem(h) memset(h,-1,sizeof h)#define mcp(a,b) memcpy(a,b,sizeof b)using namespace std;typedef long long LL;typedef uns_青蛙跳杯子-第八届蓝桥省赛-c组

电子信息工程专业保研:从211到北大软微保研面试经验分享(含通信原理面试真题)_电子信息保研北大-程序员宅基地

文章浏览阅读9.4k次,点赞28次,收藏158次。2021保研面试经验分享(含真题)保研经历:夏令营面试经验:预推免面试经验:资料下载保研经历:本人211电子信息工程专业,2020年保研至北京大学硕士。以下为一些高校面试经验\面试真题。整理不易,欢迎点赞收藏~,感谢!夏令营:北大信科计算机系、浙大工程师学院、东南大学网安学院、华科国光国家重点实验室、中科大科学岛、北理工电信学院、山东大学电信学院预推免:北大软微、清华深圳电子通信项目、复旦通信系、中科院计算机学院学硕夏令营面试经验:第一面:北大信科计算机系当时为了去名校报的直博,电子信息工程跨_电子信息保研北大

基于JDK7 NIO2的高性能web服务器实践之二(转)-程序员宅基地

文章浏览阅读75次。前一篇博客,我简单提了下怎么为NIO2增加TransmitFile支持,文件传送吞吐量是一个性能关注点,此外,并发连接数也是重要的关注点。不过JDK7中又一次做了简单的实现,不支持同时投递多个AcceptEx请求,只支持一次一个,返回后再投递。这样,客户端连接的接受速度必然大打折扣。不知道为什么sun会做这样的实现,WSASend()/WSAReceive()一次只允许一个还是可以理解..._jlong_to_ptr

Codeforces 574A Bear and Elections 思维题 暴力/优先队列-程序员宅基地

文章浏览阅读141次。题源:http://codeforces.com/problemset/problem/574/A思路:更多像是个思维题吧,数据量不大,完全可以暴力,暴力的代码不放了,每次找出队列里面的最大值,然后-1,然后第一项+1。直到最大的一项是第一个元素。。自己做的时候用了堆,按num从大到小排序,若相等,id小的在后面,可以用于判断是不是还有和1一样大的。自己这次写题解的时候也不知道自己当时怎么..._bear and elections

Java ip地址查询,根据ip接口获得ip所在省市区,邮编,运营商等_java如何通过ip地址获得运营商的ldns-程序员宅基地

文章浏览阅读5.0k次。互联网有很多接口可以实现通过ip查询到具体的位置,如下:通过淘宝IP地址库获取IP位置1. 请求接口(GET):http://ip.taobao.com/service/getIpInfo.php?ip=[ip地址字串]2. 响应信息:(json格式的)国家 、省(自治区或直辖市)、市(县)、运营商3. 返回数据格式:{"code":0,"data":{"ip":"210.75..._java如何通过ip地址获得运营商的ldns

随便推点

如何模拟用户登录爬取知乎_sso 爬取-程序员宅基地

文章浏览阅读842次。**如何模拟用户登录爬取知乎**import requests# 可以读取本地的cookie送给requeststry: import cookielib # Python2中叫cookielibexcept: import http.cookiejar as cookielib # Python3中叫做cookiej..._sso 爬取

SAP:SMARTFORM打开WORD文档出错,或无法编辑_sap smartform 报错-程序员宅基地

文章浏览阅读2.8k次,点赞2次,收藏5次。SAP760或者750都会出现这类问题:无法拖拽或编辑,出现这样的问题是因为SAP版本与本机中的office不兼容导致的解决办法:1.安装SAP插件:插件存在个人资源中,可自取2.程序函数增强:SE24:CL_COS_UTILITIES对于该对象中的方法:IS_S4H增加如下代码: method is_s4h. validate_gv_s4h( ). if gv_s4h-public_cloud_on = abap_true. rv_is_s4h = abap_sap smartform 报错

【数字图像处理】——BMP文件的简单操作_hxlbmpfile.h-程序员宅基地

文章浏览阅读1.6k次,点赞5次,收藏15次。1、在 VC 环境下 – 建立动态库工程,录入 HXLBMPFILE 类,建立相应动态库,将整个类作为动态库输出。输出 HXLBMPFILE.dll/lib 。可参考动态库如何建立录入 hxlbmpfile.h 文件,包含 HXLBMPFILE 类 的定义#pragma once#include"stdio.h"#include"math.h"#include"windows.h"#..._hxlbmpfile.h

前端之路从此启程____ _.-' \ / \ / \ / `.___ ( .--.)\/(,.--. `-. ,',-程序员宅基地

文章浏览阅读862次,点赞10次,收藏3次。一楼镇图## _ooOoo_ o8888888o 88" . "88 (| -_- |) O\ = /O ...____ _.-' \ / \ / \ / `.___ ( .--.)\/(,.--. `-. ,',-. \ / ,-.`. ) ( / \ / \ )

模电(一)半导体基础_模电中va是什么-程序员宅基地

文章浏览阅读2k次,点赞9次,收藏25次。模拟电子电路之半导体基础【概念-本征半导体-杂质半导体-PN结】_模电中va是什么

python小作业4代码(简单循环语句的应用)_智力捕鱼python-程序员宅基地

文章浏览阅读1.6k次,点赞5次,收藏10次。任务一:水仙花数判断程序任务内容:水仙花数是一个三位整数,如153是一个水仙花数,是因为该数的百位的立方、十位的立方、个位的立方之和等于该数本身。程序编写要求:使用for语句完成;统计水仙花数个数的值请保存到变量中,并要求自动进行统计。代码:print("所有三位数中的水仙花数如下所示:")count=0for i in range(100,1000): a = i//10..._智力捕鱼python

推荐文章

热门文章

相关标签