mybatis入门(一)-mybatis介绍和获取SqlSession

       首先什么是MyBatis呢?要找到这个问题的答案,当然最准确的说法肯定在开发出它的人那,谁是开发它的人呢。然后...

       我们就要用到学软件必不可少的神器了 https://github.com/ , 如果不知道github的话,赶快去百度谷歌搜索,知道了之后就注册一个github账户,并学会GitHub的使用,由于这篇文章重点不再这里,所以不会专门讲这些操作。

       我们在GitHub上搜索MyBatis,并进入仓库在ReadMe.md里面,可以找到我们想要的答案。

       虽然笔者的英文水平一般,但还是可以翻译个大概意思出来的-MyBatisSQL映射框架,它使得我们更容易的在应用中使用关系型数据库。MyBatis使用XML描述符或注解的方式联系对象和存储过程或者SQL语句。简单是MyBatis在对象关系映射工具中的最大优势。

            简单,容易这应该是最吸引我们的地方了。

       然后,我们在README最下面点击Dowmload Latest(最近的一个版本),这里下的是3.1.1的。

       接下来,我们来通过一个示例来获取SqlSession。

 第一步:通过myeclipse创建一个Web或者是java项目,项目目录结构如下

       


 第二步:新建一个Configuration.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>

  <environments default="mysql_development">
   <!-- 连接环境信息 -->
    <environment id="mysql_development">
    
    <!-- mysql使用什么事物管理方式 -->
      <transactionManager type="JDBC">
        <property name="" value=""/>
      </transactionManager>
      
      <!-- mybatis使用连接池方式来获取连接对象 -->
      <dataSource type="POOLED">
     
        <!-- 配置数据库连接信息 -->
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        
        <property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis"/>
        
        <property name="username" value="root"/>
        
        <property name="password" value="root"/>
        
      </dataSource>
    </environment>
  </environments>

</configuration>
第三步:写MyBatisUtil.java,维护数据库连接的工具类。

package com.cxspace.db;

import java.io.IOException;
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;

public class MyBatisUtil {

	 private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<SqlSession>();
	 private static SqlSessionFactory sqlSessionFactory;
	 
	 //加载Configuration.xml配置文件
	 static{
		 try {
			
			 Reader reader = Resources.getResourceAsReader("com/cxspace/config/Configuration.xml");
			
			 sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
			 
			 
		} catch (IOException e) {
			
			 e.printStackTrace();
		}
	 }
	 
	 /*
	  * 禁止外部new来调用
	  */
	 private MyBatisUtil(){
		 
	 }
	 
	 /*
	  * 获取SqlSession
	  */
	 public static SqlSession getSqlSession(){
		 
		 //从当前线程中获取SqlSession对象
		 SqlSession sqlSession = threadLocal.get();
		 
		 //如果SqlSession为空
		 if (sqlSession == null) {
		
			 //在SqlSessionFactory非空的情况下,获取SqlSession对象
			 sqlSession = sqlSessionFactory.openSession();
			 //将SqlSession对象与当前线程绑定在一起
			 threadLocal.set(sqlSession);
		}
		 
		 //返回SqlSession对象
		 return sqlSession;
	 }
	
	 /*
	  * 关闭SqlSession与当前线程分开
	  */
	 public static void closeSqlSession(){
		 
		 //从当前线程中获取SqlSession对象
		 SqlSession sqlSession = threadLocal.get();
		 
		 //如果SqlSession对象非空
		 if (sqlSession != null) {
			 //关闭
			sqlSession.close();
			//放开当前线程与SqlSession对象的关系,让GC尽快回收
		    threadLocal.remove();
		    
		}
		 
	 }
	 
}

获取测试

           

	public static void main(String[] args) {
		
		MyBatisUtil.getSqlSession().getConnection();

		System.out.println("获取连接成功");
	}

       

     

      

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Mybatis获取SqlSession对象的方法有两种: 1. 通过SqlSessionFactory获取SqlSession对象 首先需要创建一个SqlSessionFactory对象,可以通过读取mybatis的配置文件来创建,然后通过SqlSessionFactory对象的openSession()方法获取SqlSession对象。 示例代码: //读取mybatis配置文件 InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml"); //创建SqlSessionFactory对象 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //获取SqlSession对象 SqlSession sqlSession = sqlSessionFactory.openSession(); 2. 通过Spring框架获取SqlSession对象 如果项目中使用了Spring框架,可以通过Spring的容器来获取SqlSession对象。需要在Spring的配置文件中配置SqlSessionFactory和SqlSessionTemplate两个Bean,然后通过@Autowired注解来注入SqlSessionTemplate对象。 示例代码: <!-- 配置SqlSessionFactory --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="configLocation" value="classpath:mybatis-config.xml"/> </bean> <!-- 配置SqlSessionTemplate --> <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg ref="sqlSessionFactory"/> </bean> //注入SqlSessionTemplate对象 @Autowired private SqlSessionTemplate sqlSessionTemplate; ### 回答2: MyBatis获取SqlSession对象是非常重要的,SqlSessionMyBatis操作数据库的核心对象,用来执行SQL语句、提交事务、获取映射器等。 三种获取SqlSession对象的方式: 1.使用SqlSessionFactoryBuilder来读取配置文件,创建SqlSessionFactory对象,再通过SqlSessionFactory对象创建SqlSession对象: ``` String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession sqlSession = sqlSessionFactory.openSession(); ``` 2.使用MyBatis提供的Resources类,直接获取配置文件流,创建SqlSessionFactory对象,再通过SqlSessionFactory对象创建SqlSession对象: ``` String resource = "mybatis-config.xml"; Reader reader = Resources.getResourceAsReader(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); SqlSession sqlSession = sqlSessionFactory.openSession(); ``` 3.使用Spring框架集成MyBatis,通过SqlSessionFactoryBean配置SqlSessionFactory,再通过SqlSessionFactory来创建SqlSession对象: ``` <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/test?useSSL=false"/> <property name="username" value="root"/> <property name="password" value="password"/> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="configLocation" value="classpath:mybatis-config.xml"/> </bean> <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg ref="sqlSessionFactory"/> </bean> ``` 无论是哪种方式获取SqlSession对象,都要注意调用close方法将SqlSession对象关闭,释放数据库资源。 否则,容易出现数据库连接泄漏的问题,影响系统性能。因此,在使用MyBatis操作数据库时,一定要注意SqlSession的使用和关闭。 ### 回答3: Mybatis是一个基于Java的开源数据访问框架,提供了面向对象的持久化操作方式,是许多Java Web应用的首选框架。其核心是SqlSessionMybatis通过SqlSession与数据库进行交互。因此,获取SqlSession对象是使用Mybatis的第一步。 获取SqlSession对象主要有以下两种方式: 1. SqlSessionFactoryBuilder 首先,需要创建SqlSessionFactoryBuilder对象,通过它配置Mybatis并创建SqlSessionFactory对象,再通过SqlSessionFactory对象生成SqlSession对象。示例代码如下: ``` InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml"); SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); SqlSessionFactory sqlSessionFactory = builder.build(inputStream); SqlSession sqlSession = sqlSessionFactory.openSession(); ``` 这里,首先使用Resources.getResourceAsStream加载Mybatis配置文件mybatis-config.xml,然后创建SqlSessionFactoryBuilder对象builder,调用其build方法创建SqlSessionFactory对象sqlSessionFactory,最后通过SqlSessionFactory对象的openSession方法获取SqlSession对象sqlSession。 2. @Inject注解 另外一种获取SqlSession对象的方式是使用@Inject注解。通过在Mapper接口的字段或setter方法上添加@Inject注解,Mybatis会自动注入SqlSession对象。示例代码如下: ``` public interface UserMapper { @Inject SqlSession sqlSession; // 或者 void setSqlSession(SqlSession sqlSession); } ``` 这里,通过@Inject注解,Mybatis会自动注入SqlSession对象sqlSession。另外也可以通过setter方法进行注入。 总结起来,获取SqlSession对象有两种常用方式:通过SqlSessionFactoryBuilder对象创建,或在Mapper接口中使用@Inject注解。根据实际情况选择合适的方式进行使用即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值