• 【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">
    
    • 1
    • 2
    • 3
    • 4

    configuration 根标记–只能有一个
    dtd约束 规定可以出现的标签、标签的顺序、属性、属性的值

    4.1environment

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

    测试

     @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");
    
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    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"/>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    4.3dataSource(数据源)

    dataSource配置:

    1.数据源
    2.作用

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

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

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

    5.常见的数据源组件:
                阿里巴巴的德鲁伊连接池:druid
                c3p0
                dbcp
                ...
    
    • 1
    • 2
    • 3
    • 4
    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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    4.4properties

    第一种

    java.util.Properties类,是一个Map集合。key和value都是String类型
    在该标签中可以配置多个属性
    
    • 1
    • 2
     <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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

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

    在resources下新建jdbc.properties

    jdbc.driver=com.mysql.cj.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/powernode
    jdbc.username= root
    jdbc.password=123456
    
    • 1
    • 2
    • 3
    • 4

    在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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    properties和mapper标签的url属性
    <!--    方式二
            从绝对路径中加载资源 file:///路径
    -->
    <!--    <properties url="file///"/>-->
    
    • 1
    • 2
    • 3
    • 4

    不建议

    4.5mapper

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

    完整代码

    <?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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
  • 相关阅读:
    数据结构:简单记录顺序表、链表、栈、队列
    线性代数的本质(四)——行列式
    windows编译ZLMediaKit流媒体服务webrtc
    web前端网页制作课作业:用DIV+CSS技术设计的静态网站【四大名著】中国传统文化主题题材设计
    论文投稿指南——中国(中文EI)期刊推荐(第1期)
    Postman自动化测试实战:使用脚本提升测试效率
    第十一届中国创新创业大赛浙江赛区暨第九届浙江省“火炬杯”创新创业大赛-新一代信息技术行业总决赛
    【环境搭建】windows下MySQL8与5共存
    实战攻防演练-Linux写入ssh密钥,利用密钥登录
    vmware workstation pro 17.5 安装 macos 13.5.2 虚拟机超详细图文教程
  • 原文地址:https://blog.csdn.net/misakisaigao/article/details/128016809