Mybatis+Tomcat使用JNDI配置数据源入门

在我们已经有了Mybatis基础的情况下,我们可以使用Tomcat部署web项目

1.创建Maven项目

创建项目

选择webapp

2.配置pom.xml

在pom.xml中添加依赖 这里的依赖比单纯的Mybatis配置多了两个 一个是jsp的依赖,另一个是servlet

<dependencies>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.4</version>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.6</version>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.12</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.10</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.0</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
    </dependency>
  </dependencies>

3.构建的Maven项目的目录

新构建的目录是不完整的,我们需要在src目录下新建test目录,在main目录下新建java以及resources目录 这边是为了与之前学习Mybatis一致。webapp下新建一个META-INF目录,该目录下新建一个context.xml 用来配置JNDI

当然仅仅创建文件夹是不行的,我们得更改它们的类型

在这里插入图片描述

最终的目录是下面这样

在这里插入图片描述

  上面一些文件和案例是引用上一篇博客的代码

4.配置context.xml

<?xml version="1.0" encoding="UTF-8"  ?>
<Context>


    <Resource
            name="jdbc/ssmtest"
            type="javax.sql.DataSource"
            auth="Container"
            maxActive="20"
            maxWait="10000"
            maxIdle="5"
            username="root"
            password="feng10.10"
            driverClassName="com.mysql.jdbc.Driver"
            url="jdbc:mysql://localhost:3306/ssmtest"

    />


</Context>
上边那个存放的是JNDI的全局数据源

下面是JNDI的一些属性

属性 含义
name 数据源的名称
type 数据源类型
auth 数据源提供者 这里是Tomcat
maxActive 最大活动数
maxWait 最大等待时间 以秒为单位
maxIdle 最大空闲数
username 账号
password 密码
url url

5.配置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 是取别名  typeAlias是为type属性的取一个alias中的别名

    -->
    <typeAliases>

<!--        <typeAlias type="com.test.domain.User" alias="user"></typeAlias>-->
       <!--用于指定要配置别名的包,当指定之后,该包下的实体类都会注册别名,并且类名就是别名,不再区分大小写-->
        <package name="com.test.domain"/>

    </typeAliases>

    <!--配置环境-->
    <environments default="mysql">
        <environment id="mysql">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="JNDI">
                <property name="data_source" value="java:comp/env/jdbc/ssmtest"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!-- <mapper resource="com/test/Dao/IUserDao.xml"></mapper> -->
        <!-- 这里的package标签是用于指定dao接口的所在的包,当指定了之后就不需要再写mapper及其他的属性resource 或者 class -->
        <package name="com.test.Dao"/>

    </mappers>


</configuration>

应该不难发现这上面与一般的mybatis配置不同的地方就在于dataSource标签type属性设置为JNDIproperty标签的属性:name设置为data_source 、value设置为java:comp/env/xxx/xxx 这边的xxx对应前面JNDI属性name的值

6.配置index.jsp启动Tomcat服务

 在webapp目录的WEB-INF下有一个index.jsp,配置完Tomcat启动Tomcat会默认访问index.jsp,我们可以在该jsp中插入java代码块。
<%@ page import="java.io.InputStream" %>
<%@ page import="org.apache.ibatis.io.Resources" %>
<%@ page import="org.apache.ibatis.session.SqlSessionFactory" %>
<%@ page import="org.apache.ibatis.session.SqlSessionFactoryBuilder" %>
<%@ page import="org.apache.ibatis.session.SqlSession" %>
<%@ page import="com.test.Dao.IUserDao" %>
<%@ page import="java.util.List" %>
<%@ page import="com.test.domain.User" %>

<%@page language="java" contentType="text/html; UTF-8" pageEncoding="UTF-8" %>
<html>
<body>
<h2>Hello World!</h2>
<%
    InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
    SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(in);
    SqlSession sqlSession =factory.openSession();
    IUserDao userDao=sqlSession.getMapper(IUserDao.class);
    List<User> users=userDao.findAll();
    for(User user:users){
//        System.out.println(user);
        out.print(user);
        out.print("<br/>");
    }

%>
</body>
</html>

代码块里的内容就是使用Mybatis框架来访问数据库表,我们将在网页中获取到该表的全部信息

在这里插入图片描述

好了,写完这篇博客,情人节也差不多进入尾声了。
发布了2 篇原创文章 · 获赞 2 · 访问量 185

猜你喜欢

转载自blog.csdn.net/xiuyuandashen/article/details/104317736
今日推荐