文章目录
JNDI概述
JNDI:Java Naming and Directory Interface。是SUN公司推出的一套规范,属于JavaEE技术之一。目的是模仿windows系统中的注册表。
windows系统中的数据存储方式:路径+文件名+变量名称组成key,用于定位变量路径,数据是value。
下图是windows中注册表编辑器定位一个变量和确定数据值的实例。
key:计算机\HKEY_CURRENT_USER\Control Panel\Accessibility\Keyboard Response\Flags
value:126
这是使用JNDI模仿示例图。
JNDI数据源的使用方法
新建基于骨架的web工程
按照标准web工程建立目录结构
在webapp目录下新建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/mybatis_learn"
type="javax.sql.DataSource"
auth="Container"
maxActive="20"
maxWait="10000"
maxIdle="5"
username="root"
password="123456"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/mybatis_learn"
/>
</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>
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="JNDI">
<property name="data_source" value="java:comp/env/jdbc/mybatis_learn"/>
</dataSource>
</environment>
</environments>
<!-- 指定每个映射配置文件的位置-->
<mappers>
<mapper resource="com/cncs/dao/IUserDao.xml"/>
</mappers>
</configuration>
在index.jsp页面粘贴代码,然后运行tomcat服务器。
<%@ page import="org.apache.ibatis.session.SqlSessionFactory" %>
<%@ page import="org.apache.ibatis.session.SqlSessionFactoryBuilder" %>
<%@ page import="java.io.InputStream" %>
<%@ page import="org.apache.ibatis.io.Resources" %>
<%@ page import="org.apache.ibatis.session.SqlSession" %>
<%@ page import="com.cncs.dao.IUserDao" %>
<%@ page import="com.cncs.domain.User" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<body>
<h2>Hello World!</h2>
<%
//1.读取mybatis核心配置文件
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
//2.创建工厂对象
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory sessionFactory = builder.build(in);
//3.通过工厂对象构建SqlSession对象
SqlSession sqlSession = sessionFactory.openSession();
//4.通过SqlSession对象创建代理对象
IUserDao userDao = sqlSession.getMapper(IUserDao.class);
//5.执行代理对象的方法
List<User> userList = userDao.findAll();
System.out.println(userList);
//6.释放资源
sqlSession.close();
in.close();
%>
</body>
</html>