Mybatis环境配置及测试详解

 更新时间:2021年01月18日 10:29:27   作者:Pumpkin  
这篇文章主要介绍了Mybatis环境配置及测试详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

mybatis 3 | 参考文档

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。

MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

一、mybatis环境配置

1.通过maven的pom.xml文件引入mybatis需要的包

在其<dependencies></dependencies>标签中添加如下代码

 <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.1</version>
 </dependency>

2.在src/main/resources下新建mybatis-config.xml文件

并进行xml文件和config的dtd文件的声明

  <?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">

3.在mybatis-config.xml文件中的<configuration></configuration>中对数据库进行配置

<configuration>
  <settings>
<!--    开启驼峰命名转换,若底层数据库表项为goods_ID,实体类为goodsId ,则自动转换-->
    <setting name="mapUnderscoreToCamelCase" value="true"/>
  </settings>
  <!-- 设置默认指向的数据库 -->
  <environments default="dev">
    <environment id="dev">
      <!-- 采用JDBC方式对数据库事务进行commit/rollback -->
      <transactionManager type="JDBC"></transactionManager>
      <!-- 采用连接池的方式管理数据库连接  -->
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/babytun?useUnicode=true&amp;characterEncoding=UTF-8"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
      </dataSource>
    </environment>
  </environments>
</configuration>

4.通过SqlSessionFactory构建SqlSession会话实例

每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory 实例。

从 XML 文件中构建 SqlSessionFactory 的实例非常简单,建议使用类路径下的资源文件进行配置。 但也可以使用任意的输入流(InputStream)实例,比如用文件路径字符串或 file:// URL 构造的输入流。MyBatis 包含一个名叫 Resources 的工具类,它包含一些实用方法,使得从类路径或其它位置加载资源文件更加容易。

通常SqlSession是全局唯一的,通过MybatisUtils工具类减少重复代码

public class MybatisUtils {
  //利用static静态 属于类而不属于对象 , 保证全局唯一
  private static SqlSessionFactory sqlSessionFactory = null ;
  //利用静态块在初始化类时实力话SqlSessionFactory
  static {
    Reader reader = null;
    try {
      reader = Resources.getResourceAsReader("mybatis-config.xml");
      sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader) ;
    } catch (IOException e) {
      e.printStackTrace();
      //初始化过程中出现的异常
      throw new ExceptionInInitializerError(e) ;
    }
  }

  /**
   * 创建一个新的sqlsession对象
   * @return sqlsession对象
   * */

  public static SqlSession openSession(){
    return sqlSessionFactory.openSession() ;
  }

  public static void closeSession(SqlSession sqlSession){
    if(sqlSession != null ){
      sqlSession.close();
    }
  }

}

5.通过SqlSession对数据库进行操作

在entity包下创建要操作的数据库表对应的实体类(必须使用驼峰命名和设置get和set方法),同时在resources目录下创建mappers目录,在mappers目录下创建与该实体类同名的xml文件,在对其进行xml声明和mapperdtd文件声明(注意与mybatis-config.xml的dtd文件声明的区别)

<?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">

然后在mybatis-config.xml文件引入该实体与数据库的映射。即在其<mappers></mappers>标签中添加映射xml文件路径

 <mappers>
    <mapper resource="mappers/goods.xml" />
    <mapper resource="mappers/goods_detail.xml" />
 </mappers>

当数据库列字段名为多单词且用"_"拼接时,还需在其<configuration></configuration>标签中开启驼峰命名转换,使Mybatis自动完成映射。

 <settings>
<!--    开启驼峰命名转换,若底层数据库表项为goods_ID,实体类为goodsId ,则自动转换-->
    <setting name="mapUnderscoreToCamelCase" value="true"/>
 </settings>

到此为止,mybatis需要的配置就已全部完成。

运行程序测试结果

在 src 源码目录下建立 一个类叫作:HelloWord, 来运行测试配置环境是否成功,具体代码如下示:

import java.io.Reader;

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 com.yiibai.mybatis.models.*;

/**
 * 
 * @author yiibai
 * @copyright //www.jb51.net
 * @date 2015/09/22
 */
public class HelloWord {
 private static SqlSessionFactory sqlSessionFactory;
 private static Reader reader;

 static {
 try {
  reader = Resources.getResourceAsReader("config/Configure.xml");
  sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
 } catch (Exception e) {
  e.printStackTrace();
 }
 }
 public static SqlSessionFactory getSession() {
 return sqlSessionFactory;
 }
 /**
 * @param args
 */
 public static void main(String[] args) {
 // TODO Auto-generated method stub
 SqlSession session = sqlSessionFactory.openSession();
 try {
  User user = (User) session.selectOne(
   "com.yiibai.mybatis.models.UserMapper.GetUserByID", 1);
  if(user!=null){
  String userInfo = "名字:"+user.getName()+", 所属部门:"+user.getDept()+", 主页:"+user.getWebsite();
  System.out.println(userInfo);
  }
 } finally {
  session.close();
 }
 }
}

现在运行这个程序,不是得到查询结果了?正确的输出结果应该如下:

名字:yiibai, 所属部门:Tech, 主页://www.jb51.net

到此这篇关于Mybatis环境配置及测试详解的文章就介绍到这了,更多相关Mybatis环境配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringCloud Alibaba框架介绍

    SpringCloud Alibaba框架介绍

    spring cloud是一个基于springboot实现的微服务架构开发工具,目前主流的SpringCloud分为SpringCloud Netflix和阿里云开源的SpringCloud Alibaba两个系列,本文主要介绍SpringCloud Alibaba框架,感兴趣的朋友可以参考一下
    2023-04-04
  • 使用阿里云OSS的服务端签名后直传功能的流程分析

    使用阿里云OSS的服务端签名后直传功能的流程分析

    这篇文章主要介绍了使用阿里云OSS的服务端签名后直传功能,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • 详解Spring AOP

    详解Spring AOP

    本文非常详细讲解了Spring AOP,本篇文章通过大量的代码,讲解了Spring AOP的使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • 解决try-catch捕获异常信息后Spring事务失效的问题

    解决try-catch捕获异常信息后Spring事务失效的问题

    这篇文章主要介绍了解决try-catch捕获异常信息后Spring事务失效的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Spring Cache整合Redis实现方法详解

    Spring Cache整合Redis实现方法详解

    这篇文章主要介绍了Spring Cache整合Redis实现方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • 教你如何轻松学会Java快慢指针法

    教你如何轻松学会Java快慢指针法

    要想把搬砖的效率提高,我们肯定是逃不掉数据结构和算法知识的,这不,可爱的小编今天就和大家一起学习来了,今天给大家分享的是快慢指针,那啥是快慢指针呢,文中有非常详细的解释,需要的朋友可以参考下
    2021-06-06
  • java文件上传(单文件 多文件)与删除

    java文件上传(单文件 多文件)与删除

    本文主要分享了java文件上传(单文件 多文件)与删除的示例代码。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • Java注解详解之@Override注解

    Java注解详解之@Override注解

    这篇文章主要给大家介绍了关于Java注解之@Override注解的相关资料,@Override是Java中的一个注解,表示一个方法是重写(Override)了父类中的方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • 解决idea中java出现无效的源发行版问题

    解决idea中java出现无效的源发行版问题

    这篇文章主要给大家介绍了关于解决idea中java出现无效的源发行版问题的相关资料,无效的源发行版是指IntelliJ IDEA无法正确识别和处理的源代码版本,这可能是由于错误的配置、缺少依赖项、不兼容的插件或其他问题导致的,需要的朋友可以参考下
    2024-01-01
  • Java中程序的运行全过程

    Java中程序的运行全过程

    这篇文章主要介绍了Java中程序的运行全过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03

最新评论