【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 根标记–只能有一个
dtd约束 规定可以出现的标签、标签的顺序、属性、属性的值

4.1environment

<!--    default表示默认使用的环境-->
    <environments default="powernodeDB">
        <!--其中的一个环境,连接的数据库是powernode-->
<!--        一般一个环境environment会对应一个SqlSessionFactory对象
-->
        <environment id="powernodeDB">

测试

 @Test
    public void testEnvironment() throws Exception {
        //获取SqlSessionFactory对象
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        //采用默认的方式获取
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(Resources.getResourceAsStream("mybatis-config.xml"));
        //通过环境id来使用指定的环境
        SqlSessionFactory sqlSessionFactory1 = sqlSessionFactoryBuilder.build(Resources.getResourceAsStream("mybatis-config.xml"),"powernodeDB");

    }

4.2transactionManager

   <!--事务管理器-->
<!--
            transactionManager标签:
            1.作用:配置事务管理器,指定mybatis具体使用什么方式去管理事务
            2.type属性有两个值:
                JDBC:使用原生JDBC代码来管理事务
                conn.setAutoCommit(false);
                ...
                conn.commit();

                MANAGED,mybatis不再负责事务的管理,将事务管理交给其他的JEEJavaEE)容器来管理_spring
            3.不区分大小写
            4.在mybatis中提供了一个事务管理器的接口:Transaction对象
            该接口下有两个实现类:
            JdbcTransaction
            MANAGEDTransaction
-->
            <transactionManager type="JDBC"/>

4.3dataSource(数据源)

dataSource配置:

1.数据源
2.作用

为程序提供Connection对象【只要是给程序提供Connection对象的都叫数据源】

3.数据源实际上是一套规范,是JDK规定的:javax.sql.DataSource
4.只要实现javax.sql.DataSource接口中所有的方法,就可以连接自己的数据源

数据库连接池是提供连接对象的,所以它就是一个数据源

5.常见的数据源组件:
            阿里巴巴的德鲁伊连接池:druid
            c3p0
            dbcp
            ...
6.type属性指定数据源类型(即指定使用什么方式来获取Connection对象)

type属性有三个值:
UNPOOLED :不使用数据库连接池技术,每一次请求过来之后,都是创建新的Connection对象。
POOLED:使用mybatis自己实现的数据库连接池
JNDI:集成其他第三方的数据库连接池
JNDI是一套规范,大部分web容器都实现了该规范(Tomcat WebLogic WebSphere Jetty)
JNDI:java命名目录接口

连接池优点

1.每一次获取连接都从池中拿,效率高
2.因为每一次只能从池中拿,所以连接对象的创建数量是可控的(可以防止数据库宕机)

配置具体的数据库连接池参数

            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>-->
                <property name="url" value="jdbc:mysql://localhost:3306/powernode"/>-->
                <property name="username" value="root"/>-->
              <property name="password" value="123456"/>-->

<!--提醒:使用连接池时,池中很多参数需要设置以达到让连接池发挥地更好-->
<!--poolMaximumActiveConnections:连接池当中最多的正在使用的连接对象的数量上限,默认值是10-->
                <property name="poolMaximumActiveConnections" value="10"/>
<!--每隔两秒打印日志,并且尝试获取连接对象-->
                <property name="poolTimeToWait" value="2000"/>
<!--强行让某个连接空闲,超时时间的设置-->
                <property name="poolMaximumCheckoutTime" value="10000"/>
<!--最多的空闲数量-->
                <property name="poolMaximumIdleConnections" value="5"/>
            </dataSource>

4.4properties

第一种

java.util.Properties类,是一个Map集合。key和value都是String类型
在该标签中可以配置多个属性
 <properties>
        <property name="jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
        <property name="jdbc.url" value="jdbc:mysql://localhost:3306/powernode"/>
        <property name="jdbc.username" value="root"/>
        <property name="jdbc.password" value="123456"/>
    </properties>

<dataSource type="POOLED">
                 <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
        </dataSource>

改进版-----最终版本

在resources下新建jdbc.properties

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/powernode
jdbc.username= root
jdbc.password=123456

在mybatis-config.xml中

 <properties resource="jdbc.properties"/>

<dataSource type="POOLED">
                 <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
        </dataSource>
properties和mapper标签的url属性
<!--    方式二
        从绝对路径中加载资源 file:///路径
-->
<!--    <properties url="file///"/>-->

不建议

4.5mapper

 <mappers>
<!--        执行Mapper映射文件的路径-->
        <mapper resource="carMapper.xml"/>
 </mappers>

完整代码

<?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>
<!--    java.util.Properties类,是一个Map集合。key和value都是String类型-->
<!--    在该标签中可以配置多个属性-->
<!--    <properties>-->
<!--        <property name="jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>-->
<!--        <property name="jdbc.url" value="jdbc:mysql://localhost:3306/powernode"/>-->
<!--        <property name="jdbc.username" value="root"/>-->
<!--        <property name="jdbc.password" value="123456"/>-->
<!--    </properties>-->

<!-- 方式一-->
    <properties resource="jdbc.properties"/>

<!--    方式二
        从绝对路径中加载资源 file:///路径
-->
<!--    <properties url="file///"/>-->

    
    <!--开启mybatis对标准日志的实现-->
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>
<!--    default表示默认使用的环境-->
    <environments default="powernodeDB">
        <!--其中的一个环境,连接的数据库是powernode-->
<!--        一般一个环境environment会对应一个SqlSessionFactory对象-->
        <environment id="powernodeDB">
            <!--事务管理器-->
<!--
            transactionManager标签:
            1.作用:配置事务管理器,指定mybatis具体使用什么方式去管理事务
            2.type属性有两个值:
                JDBC:使用原生JDBC代码来管理事务
                conn.setAutoCommit(false);
                ...
                conn.commit();

                MANAGED,mybatis不再负责事务的管理,将事务管理交给其他的JEEJavaEE)容器来管理_spring
            3.不区分大小写
            4.在mybatis中提供了一个事务管理器的接口:Transaction对象
            该接口下有两个实现类:
            JdbcTransaction
            MANAGEDTransaction
-->
            <transactionManager type="JDBC"/>
<!--
            dataSource配置:
            1.数据源
            2.作用:为程序提供Connection对象【只要是给程序提供Connection对象的都叫数据源】
            3.数据源实际上是一套规范,是JDK规定的:javax.sql.DataSource
            4.只要实现javax.sql.DataSource接口中所有的方法,就可以连接自己的数据源
            数据库连接池是提供连接对象的,所以它就是一个数据源
           连接池优点:
                1.每一次获取连接都从池中拿,效率高
                2.因为每一次只能从池中拿,所以连接对象的创建数量是可控的(可以防止数据库宕机)
            5.常见的数据源组件:
                阿里巴巴的德鲁伊连接池:druid
                c3p0
                dbcp
                ...
             6.type属性指定数据源类型(即指定使用什么方式来获取Connection对象)
                type属性有三个值:
                UNPOOLED :不使用数据库连接池技术,每一次请求过来之后,都是创建新的Connection对象。
                POOLED:使用mybatis自己实现的数据库连接池
                JNDI:集成其他第三方的数据库连接池
                JNDI是一套规范,大部分web容器都实现了该规范(Tomcat WebLogic WebSphere JettyJNDI:java命名目录接口
-->
            <dataSource type="POOLED">
<!--                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>-->
<!--                <property name="url" value="jdbc:mysql://localhost:3306/powernode"/>-->
<!--                <property name="username" value="root"/>-->
<!--                <property name="password" value="123456"/>-->
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
<!--                提醒:使用连接池时,池中很多参数需要设置以达到让连接池发挥地更好-->
<!--                poolMaximumActiveConnections:连接池当中最多的正在使用的连接对象的数量上限,默认值是10-->
                <property name="poolMaximumActiveConnections" value="10"/>
<!--                每隔两秒打印日志,并且尝试获取连接对象-->
                <property name="poolTimeToWait" value="2000"/>
<!--                强行让某个连接空闲,超时时间的设置-->
                <property name="poolMaximumCheckoutTime" value="10000"/>
<!--                最多的空闲数量-->
                <property name="poolMaximumIdleConnections" value="5"/>
            </dataSource>
            
            
<!--            <dataSource type="JNDI">-->
<!--                <property name="initial_context" value=""/>-->
<!--                <property name="data_source" value=""/>-->
<!--            </dataSource>-->
        </environment>
        
            

    </environments>
    <mappers>
<!--        执行xxxMapper.xml文件的路径-->
        <mapper resource="carMapper.xml"/>
        <mapper resource="UserMapper.xml"/>
    </mappers>
</configuration>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值