Mybatis环境配置及测试详解

作者:Pumpkin 时间:2023-11-24 07:06:25 

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

来源:https://juejin.cn/post/6918410978589671432

标签:Mybatis,环境配置
0
投稿

猜你喜欢

  • C# 定时器保活机制引起的内存泄露问题解决

    2022-09-19 00:31:33
  • 关于@CacheEvict无法解决分页缓存清除的解决思路

    2023-07-06 20:22:44
  • java实现文件夹解压和压缩

    2022-06-07 03:00:39
  • C#使用Resources资源文件

    2023-07-04 08:42:48
  • SpringBoot项目中使用Mockito的示例代码

    2023-09-25 22:31:14
  • Java虚拟机内存分配与回收策略问题精细解读

    2021-08-12 18:54:51
  • Android使用glide加载gif动画设置播放次数

    2022-06-20 03:59:46
  • C#中的Lazy如何使用详解

    2023-10-25 12:56:34
  • C#执行EXE文件与输出消息的提取操作

    2023-02-28 00:08:06
  • Android利用CircleImageView实现圆形头像的方法

    2023-06-08 12:06:52
  • java实体类转成map的实现

    2022-03-25 08:56:04
  • 一文掌握MyBatis Plus的条件构造器方法

    2023-06-18 13:00:26
  • Java Vector实现班级信息管理系统

    2023-11-25 03:09:09
  • 生产消费者模式实现方式和线程安全问题代码示例

    2023-11-26 19:44:17
  • SpringBoot与Postman实现REST模拟请求的操作

    2022-12-22 04:06:14
  • Java比较两个对象大小的三种方法详解

    2021-07-11 18:55:16
  • springboot web项目打jar或者war包并运行的实现

    2022-11-20 03:01:59
  • 为Xamarin.Forms的导航栏增加搜索功能

    2022-01-28 18:38:58
  • 解决Jenkins集成SonarQube遇到的报错问题

    2023-11-24 08:54:10
  • Android Google AutoService框架使用详解

    2023-07-19 22:48:14
  • asp之家 软件编程 m.aspxhome.com