首页 > 编程学习 > SSM框架-MyBatis核心配置文件详解与项目补充

以上篇文章中的MyBatis_Demo模块为例。

一、核心配置文件名:application.xml

MyBatis核心配置中的标签必须按照指定位置:

        properties、settings、typeAliases、typeHandlers、objectFactory、objectWrapperFactory、reflectorFactory、plugins、environments、databaseIdProvider、mappers。

1. <properties>标签

    引入properties文件,此时application.xml就可以${属性名}的方式访问属性值

    在src/main/resources目录下,创建文件jdbc.properties

jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/ssm?characterEncoding=UTF-8
jdbc.username = root
jdbc.password = password

    在application.xml文件中就可以引入properties文件,并对application.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>

    <!--引入properties文件,此后就可以在当前文件中使用${key}的方式访问value-->
    <properties resource="jdbc.properties" />

    <environments default="development">
        <!--配置连接数据库的开发环境-->
        <environment id="development">
            <transactionManager type="JDBC"/>
            <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>
        </environment>
    </environments>

    <!--引入映射文件-->
    <mappers>
        <mapper resource="mappers/UserMapper.xml"/>
    </mappers>

</configuration>

2. <setting>标签

<settings>
    <!--将表中字段的下划线自动转换为驼峰-->
    <setting name="mapUnderscoreToCamelCase" value="true"/>
    <!--开启延迟加载-->
    <setting name="lazyLoadingEnabled" value="true"/>
</settings>

3. <typeAliases>标签

    typeAlias:设置某个具体的类型的别名

        属性:

              type:需要设置别名的类型的全类名

              alias:设置此类型的别名,若不设置此属性,该类型拥有默认的别名,即类名且不区分大小写,若设置此属性,此时该类型的别名只能使用alias所设置的值

<typeAliases>
    <!--<typeAlias type="com.wsl.mybatis.pojo.User" />-->
    <typeAlias type="com.wsl.mybatis.pojo.User" alias="abc" />
</typeAliases>
<typeAliases>
    <!--以包为单位,设置改包下所有的类型都拥有默认的别名,即类名且不区分大小写-->
    <package name="com.atguigu.mybatis.bean"/>
</typeAliases>

4. <environments>标签

    environments:设置多个连接数据库的环境

        属性:

             default:设置默认使用的环境的id

    environment:设置具体的连接数据库的环境信息

        属性:

             id:设置环境的唯一标识,可通过environments标签中的default设置某一个环境的id, 表示默认使用的环境。

<environments default="development">

        <!--配置连接数据库的开发环境-->
        <environment id="development">
            <!--
                设置事务管理器,type属性用来设置事务管理方式,
                包含JDBA(使用JDBC中原生的事务管理方式)和MANAGED(被管理,例如Spring)
            -->
            <transactionManager type="JDBC"/>
            <!--
                数据库连接的设置,dataSource表示数据源:
                    type设置数据源的类型:
                                 POOLED:表示使用数据库连接池;
                                 UNPOOLED:表示不使用数据库连接池;
                                 JNDI:表示使用上下文中的数据源
            -->
            <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>
        </environment>

        <!--配置数据库的测试环境-->
            <environment id="test">
                <transactionManager type="JDBC"/>
                <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>
            </environment>

    </environments>

5.<mappers>标签

<mappers>
    <!--<mapper resource="mappers/UserMapper.xml"/>-->
    <!--
        以包为单位,将包下所有的映射文件引入核心配置文件
        注意:此方式必须保证mapper接口和mapper映射文件必须在相同的包下
    -->
    <package name="com.wsl.mybatis.mapper" />
</mappers>

二、项目补充

1. 工具类Until

        在测试程序中,每个测试模块之间存在大量的相同重复代码,每个测试模块都要创建工厂类和会话,这个时候就可以将相同代码提取出来生成一个工具类,每次使用的时候调用这个类,就可以减少代码量提升工作效率。

        在src/main/java目录下,创建com.wsl.mybatis.utils.SqlSessionUtil.java文件

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;

public class SqlSessionUtil {

    public static SqlSession getSqlSession() {
        SqlSession sqlSession = null;
        try {
            // 获取核心配置文件的输入流
            InputStream is = Resources.getResourceAsStream("application.xml");
            // 获取SqlSessionFactoryBuilder
            SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
            // 获取sqlSessionFactoryBuilder对象
            SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
            // 获取SqlSession对象
            sqlSession = sqlSessionFactory.openSession(true);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return sqlSession;
    }
}

有这个工具类后,测试代码就可以修改为:

import com.wsl.mybatis.mapper.UserMapper;
import com.wsl.mybatis.pojo.User;
import com.wsl.mybatis.utils.SqlSessionUtil;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class MyBatisTest {

    // 增加一列
    @Test
    public void testInsert() throws IOException {
        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        int result = userMapper.insertUser();
        System.out.println("结果是:"+result);
        sqlSession.close();
    }


    // 修改
    @Test
    public void TestUpdate(){
        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        mapper.updateUser();
        sqlSession.close();
    }

    // 删除
    @Test
    public void TestDel(){
        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        mapper.delUser();
        sqlSession.close();
    }

    // 查询
    @Test
    public void TestSelect(){
        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User user = mapper.getUserById();
        System.out.println(user);
        sqlSession.close();
    }


    // 查询
    @Test
    public void TestGetAllUsers(){
        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> users = mapper.getAllUser();
        // 循环输出List里面的内容
        users.forEach(System.out::println);
        sqlSession.close();
    }

}

2. 加入log4j日志文件

        日志的级别:

                FATAL(致命)>ERROR(错误)>WARN(警告)>INFO(信息)>DEBUG(调试)

                从左到右打印的内容越来越详细

        log4j的配置文件名为log4j.xml,存放的位置是src/main/resources目录

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
        <param name="Encoding" value="UTF-8" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS}%m (%F:%L) \n" />
        </layout>
    </appender>
    <logger name="java.sql">
        <level value="debug" />
    </logger>
    <logger name="org.apache.ibatis">
        <level value="info" />
    </logger>
    <root>
        <level value="debug" />
        <appender-ref ref="STDOUT" />
    </root>
</log4j:configuration>
Copyright © 2010-2022 dgrt.cn 版权所有 |关于我们| 联系方式