mybatis的连接池和事务

连接池

1.Mybatis连接池提供三种

配置位置:主配置文件中的dataSource标签,type属性就是表示采用何种连接池方式:

tpye属性值:

POOLED:采用传统的javax.sql.DataSource规范中的连接池,

UNPOOLED:不使用连接池

JNDI: 采用服务器提供的JNDI技术实现,来获取DataSurce对象(如果不是web或者Maven的war工程不能使用)

JNDI使用:

1.在webapp文件下创建META-INF目录
2.在META-INF目录中建立一个名为context.xml的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<Context>
<!-- 
<Resource 
name="jdbc/eesy_mybatis"                  数据源的名称
type="javax.sql.DataSource"                   数据源类型
auth="Container"                        数据源提供者
maxActive="20"                         最大活动数
maxWait="10000"                            最大等待时间
maxIdle="5"                               最大空闲数
username="root"                            用户名
password="1234"                            密码
driverClassName="com.mysql.jdbc.Driver"          驱动类
url="jdbc:mysql://localhost:3306/eesy_mybatis" 连接url字符串
/>
 -->
<Resource 
name="jdbc/eesy_mybatis"
type="javax.sql.DataSource"
auth="Container"
maxActive="20"
maxWait="10000"
maxIdle="5"
username="root"
password="1234"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/eesy_mybatis"
/>
</Context>

修改SqlMapConfig.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>
<typeAliases>
		<package name="com.itheima.domain"></package>
	</typeAliases>
	<!-- 配置mybatis的环境 -->
	<environments default="mysql">
		<!-- 配置mysql的环境 -->
		<environment id="mysql">
			<!-- 配置事务控制的方式 -->
			<transactionManager type="JDBC"></transactionManager>
			<!-- 配置连接数据库的必备信息  type属性表示是否使用数据源(连接池)-->
			<dataSource type="JNDI">
				<property name="data_source" value="java:comp/env/jdbc/eesy_mybatis"/>
			</dataSource>
		</environment>
	</environments>
	
	<!-- 指定mapper配置文件的位置 -->
	<mappers>
		<mapper resource="com/itheima/dao/IUserDao.xml"/>
	</mappers>
</configuration>

注: java:comp/env/ 是前缀, jdbc/eesy_mybatis是配置context中的Resource 中的name的名字

事务

mybatis中的事务主要靠commit方法和rollback方法进行提交和回滚,

@Before//在测试方法执行之前执行
public void init()throws Exception {
//1.读取配置文件
in = Resources.getResourceAsStream("SqlMapConfig.xml");
//2.创建构建者对象
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//3.创建 SqlSession 工厂对象
factory = builder.build(in);
//4.创建 SqlSession 对象
session = factory.openSession(true);
//5.创建 Dao 的代理对象
userDao = session.getMapper(IUserDao.class);
}

@After//在测试方法执行完成之后执行
public void destroy() throws Exception{
//7.释放资源
    session.close();
    in.close();
}

session = factory.openSession(true);(设置为自动提交事务)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值