Mybatis 框架学习14 - JNDI扩展

本文介绍了JNDI(Java Naming and Directory Interface)的基本概念和原理,详细讲解了如何在Mybatis框架中使用JNDI来配置数据源。通过搭建Maven WAR工程,展示了在Tomcat服务器上设置JNDI数据源的具体步骤,包括创建context.xml配置文件,修改Mybatis的配置,以及在Servlet或JSP中如何访问数据。

JNDI 概述和原理

这里使用的例子是之前 Mybatis 一对一 查询操作的例子

1. JDNI 概述:

1.1 什么是 JNDI

​ JNDI( Java Naming and Directory Interface ),是Java平台的一个标准扩展,提供了一组接口、类和关于命名空间的概念。如同其它很多Java技术一样,JDNI是provider-based的技术,暴露了一个 API和一个服务供应接口(SPI)。这意味着任何基于名字的技术都能通过JNDI而提供服务,只要JNDI支持这项技术。JNDI目前所支持的技术包括 LDAP、CORBA Common Object Service(COS)名字服务、RMI、NDS、DNS、Windows注册表等等。很多J2EE技术,包括EJB都依靠JNDI来组织和定位实体。可以将JNDI理解为一种将对象和名字捆绑的技术,对象工厂负责生产出对象,这些对象都和唯一的名字绑在一起,外部资源可以通过名字获得某对象的引用。

​ 我们一般是在数据源这块使用JNDI,有些服务器(例如Tomcat)中自带数据库连接池,我们可以通过JNDI服务去这个连接池中找到对应的数据源Connection。

1.2 JNDI 的原理

​ 就像 windows 上面的注册表:

在这里插入图片描述
​ 在不同的文件夹中,有不同的注册表,而这些注册表在存储的时候使用的是 Map 类型。但是如果有两个注册表在不同的文件夹但是却拥有相同的名字怎么办呢?windows 在使用的使用的时候,key 存放的是路加名称径,而 value 存放的就是值。

​ 在 tomcat 中,key 是一个字符串,value 是一个 Object 对象。

在这里插入图片描述

JDNI 搭建 maven 的 war 工程

​ 由于 JNDI 需要使用到服务器(tomcat 自带连接池),所以一般的 java 工程是不够的,我们需要创建 web 工程或者 maven 的 war 工程。这里我们创建 maven 的 war 工程,使用 tomcat 服务器来提供 JNDI 的技术的实现。

1. 测试 JDNI 数据源的使用以及使用的细节

  • 首先创建一个 maven war 工程。

    在这里插入图片描述

  • 然后,为了使用 JDNI,需要配置一个 Tomcat 服务器(不同的服务器有不同 JDNI 实现标准,这里以 Tomcat 为例子)。

    在这里插入图片描述

  • 然后在 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/day23"
    type="javax.sql.DataSource"
    auth="Container"
    maxActive="20"
    maxWait="10000"
    maxIdle="5"
    username="root"
    password="root"
    driverClassName="com.mysql.cj.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/day23?serverTimezone=Asia/Shanghai"
    />
    </Context>
    
  • 这个里面已经有了数据库连接的信息,所以需要修改 resources 文件夹下的 Mybatis 的注主配置文件:

    <?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>
        <!-- 配置properties-->
        <properties resource="jdbcConfig.properties"></properties>
    
        <!--使用typeAliases配置别名,它只能配置domain中类的别名 -->
        <typeAliases>
            <package name="com.itheima.domain">
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值