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环境配置内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • MyBatis环境资源配置实现代码详解

    1. pom.xml文件配置 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.or

  • Java+Spring+MySql环境中安装和配置MyBatis的教程

    1.MyBatis简介与配置MyBatis+Spring+MySql 1.1MyBatis简介       MyBatis 是一个可以自定义SQL.存储过程和高级映射的持久层框架.MyBatis 摒除了大部分的JDBC代码.手工设置参数和结果集重获.MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型.Map 接口和POJO 到数据库记录.相对Hibernate和Apache OJB等"一站式"ORM解决方案而言,Mybatis 是一种"半自动化"的O

  • Mybatis环境搭建及文件配置过程解析

    mybatis的环境搭建: 1.创建maven工程并且导入坐标:即我们需要在pop.xml文件中添加我们需要的依赖 具体方法:搜索maven中央仓库,搜索你需要的依赖jar包,比如我搜索mybatis 点击第一个,选择需要的版本再点击,比如我选择的是3.4.6版本 将里面的代码粘贴到pop.xml文件中注意需要在两个depenencies之间,然后等待一会,maven会自动下载需要的jar包 这些做好之后我们就继续配置mybatis环境了: 我们使用mabatis需要保证我们对数据库中的<列名>

  • Mybatis环境配置及测试详解

    mybatis 3 | 参考文档 MyBatis 是一款优秀的持久层框架,它支持自定义 SQL.存储过程以及高级映射.MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作. MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型.接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录. 一.mybatis环境配置 1.通过maven的pom.xml文件引入mybatis需要的包 在其<depend

  • python3.6环境安装+pip环境配置教程图文详解

    1.python安装可以跨平台 2.有两个版本2.7和3.6,第三方库适用2.7版,两个版本不兼容 windows安装: 第一种方法官网安装: 在官网下载安装包如图: 图下点击是默认下载32位所以我们需要历史版本下载 如图点击: 下载途中标记的: 按照图中箭头执行: 这里选中存放的路径和把配置环境变量选项勾上,如图: 安装完成 测试结果 如果出现图下的就是环境变量没有配置好: 配置环境变量: 把图中2个路径配置到环境变量中 再次输入python 如图: python就安装好了; 第二种安装方法,

  • VSCode各语言运行环境配置方法示例详解

    系统环境变量的配置 如:将F:\mingw64\bin添加到系统环境变量Path中 VSCode软件语言json配置C语言 创建个.vscode文件夹,文件夹内创建以下两个文件 launch.json 文件配置 { "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg&

  • 使用VS Code的开发环境配置教程图文详解

    1. 下载Build Tools 打开这个页面 微软的C++生成工具下载 点下载生成工具 滚动到页面下方,找到Visual Studio 2019工具 下载Visual Studio 2019生成工具,这个工具看似和VisualStudio的安装包一样,但是不强制安装VisualStudio的编辑器 2. 安装Build Tools 还要在单个组件标签里勾选一个.NET Framework 4.8 SDK BuildTools安装完毕 3. 下载并安装VSCode VS Code的官网下载 4.

  • SpringBoot数据校验及多环境配置的问题详解

    目录 1. 数据校验 2. 多环境配置 3. 配置文件加载位置 4. 总结 接上节,本节补充一下数据校验及多环境配置的内容,仍是 SpringBoot-02-Config 项目. 1. 数据校验 使用数据校验,可以在输入不合法数据时抛出异常,首先要添加 validation 的依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-

  • CentOS 7.9服务器Java部署环境配置的过程详解

    目录 CentOS 7服务器Java部署环境配置 FTP服务器搭建 设置root用户可登录 jdk安装 mysql安装 开启Navicat远程连接的配置 Tomcat安装 Redis安装 Nginx安装 CentOS 7服务器Java部署环境配置 FTP服务器搭建 1.安装 vsftpd yum install -y vsftpd 2.安装完成后运行以下命令进入/etc/vsftpd目录,并查看该目录下的文件 cd /etc/vsftpd ls 设置root用户可登录 在安装vsftpd默认情况

  • ionic环境配置及问题详解

    必备条件: 安装Node.js安装Java JDK(jdk-8u71-windows-x64.exe),注意:版本必须要1.8+安装绿色版AndroidSDK (ADK编译) AndroidSDK添加环境变量 在Path系统变量中添加如下配置: %ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools; 第一次用ionic,发现各种坑. 首先node.js不要使用最新版本,否则会出现各种问题. 一开始用的v8.x的版本,各种报错,后面切换到v7.8版本

  • JDK13.0.1安装与环境变量的配置教程图文详解(Win10平台为例)

    一.下载与安装 Oracle官网下载:https://www.oracle.com/technetwork/java/javase/downloads/index.html,点击右侧下载 接受并下载对应平台文件(Win10为例) 打开安装包,一路安装,记住安装目录即可(安装路径无中文) 我的路径:F:\Java\jdk-13.0.1 下载安装完成 二.配置环境变量 JDK12以后是没有JRE的安装的,JDK本身包含JRE,网上有生成JRE的方法,这里我们直接修改环境变量(后续遇到问题在进行更正)

  • Vue多环境代理配置方法思路详解

    背景: 多人协作模式下,修改代理比较麻烦,而且很容易某个开发人员会修改了vue.config.js文件后提交了. 第一,很容易引起冲突. 第二,很容易出现代理错误,需要排查.而且现在微服务盛行,在生产环境下有网关配置,不会出错,但是在本地调试会造成麻烦,如修改了代理地址需要同步修改代理中的地址,很麻烦也很容易出错. 解决思路: 1.开发中定义常量js文件,例如constants.js.用户存放各个服务需要代理的服务名. let api = "" let loginServer = &q

随机推荐