• SSM框架-MyBatis核心配置文件详解与项目补充


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

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

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

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

    1. 标签

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

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

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

        在application.xml文件中就可以引入properties文件,并对application.xml文件可以做进一步修改

    1. "1.0" encoding="UTF-8" ?>
    2. configuration
    3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
    5. <configuration>
    6. <properties resource="jdbc.properties" />
    7. <environments default="development">
    8. <environment id="development">
    9. <transactionManager type="JDBC"/>
    10. <dataSource type="POOLED">
    11. <property name="driver" value="${jdbc.driver}"/>
    12. <property name="url" value="${jdbc.url}"/>
    13. <property name="username" value="${jdbc.username}"/>
    14. <property name="password" value="${jdbc.password}"/>
    15. dataSource>
    16. environment>
    17. environments>
    18. <mappers>
    19. <mapper resource="mappers/UserMapper.xml"/>
    20. mappers>
    21. configuration>

    2. 标签

    1. <settings>
    2. <setting name="mapUnderscoreToCamelCase" value="true"/>
    3. <setting name="lazyLoadingEnabled" value="true"/>
    4. settings>

    3. 标签

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

            属性:

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

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

    1. <typeAliases>
    2. <!--<typeAlias type="com.wsl.mybatis.pojo.User" />-->
    3. <typeAlias type="com.wsl.mybatis.pojo.User" alias="abc" />
    4. </typeAliases>
    1. <typeAliases>
    2. <package name="com.atguigu.mybatis.bean"/>
    3. typeAliases>

    4. 标签

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

            属性:

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

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

            属性:

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

    1. <environments default="development">
    2. <!--配置连接数据库的开发环境-->
    3. <environment id="development">
    4. <!--
    5. 设置事务管理器,type属性用来设置事务管理方式,
    6. 包含JDBA(使用JDBC中原生的事务管理方式)和MANAGED(被管理,例如Spring)
    7. -->
    8. <transactionManager type="JDBC"/>
    9. <!--
    10. 数据库连接的设置,dataSource表示数据源:
    11. type设置数据源的类型:
    12. POOLED:表示使用数据库连接池;
    13. UNPOOLED:表示不使用数据库连接池;
    14. JNDI:表示使用上下文中的数据源
    15. -->
    16. <dataSource type="POOLED">
    17. <property name="driver" value="${jdbc.driver}"/>
    18. <property name="url" value="${jdbc.url}"/>
    19. <property name="username" value="${jdbc.username}"/>
    20. <property name="password" value="${jdbc.password}"/>
    21. </dataSource>
    22. </environment>
    23. <!--配置数据库的测试环境-->
    24. <environment id="test">
    25. <transactionManager type="JDBC"/>
    26. <dataSource type="POOLED">
    27. <property name="driver" value="${jdbc.driver}"/>
    28. <property name="url" value="${jdbc.url}"/>
    29. <property name="username" value="${jdbc.username}"/>
    30. <property name="password" value="${jdbc.password}"/>
    31. </dataSource>
    32. </environment>
    33. </environments>

    5.标签

    1. <mappers>
    2. <package name="com.wsl.mybatis.mapper" />
    3. mappers>

    二、项目补充

    1. 工具类Until

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

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

    1. import org.apache.ibatis.io.Resources;
    2. import org.apache.ibatis.session.SqlSession;
    3. import org.apache.ibatis.session.SqlSessionFactory;
    4. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    5. import java.io.IOException;
    6. import java.io.InputStream;
    7. public class SqlSessionUtil {
    8. public static SqlSession getSqlSession() {
    9. SqlSession sqlSession = null;
    10. try {
    11. // 获取核心配置文件的输入流
    12. InputStream is = Resources.getResourceAsStream("application.xml");
    13. // 获取SqlSessionFactoryBuilder
    14. SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
    15. // 获取sqlSessionFactoryBuilder对象
    16. SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
    17. // 获取SqlSession对象
    18. sqlSession = sqlSessionFactory.openSession(true);
    19. } catch (IOException e) {
    20. e.printStackTrace();
    21. }
    22. return sqlSession;
    23. }
    24. }

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

    1. import com.wsl.mybatis.mapper.UserMapper;
    2. import com.wsl.mybatis.pojo.User;
    3. import com.wsl.mybatis.utils.SqlSessionUtil;
    4. import org.apache.ibatis.io.Resources;
    5. import org.apache.ibatis.session.SqlSession;
    6. import org.apache.ibatis.session.SqlSessionFactory;
    7. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    8. import org.junit.Test;
    9. import java.io.IOException;
    10. import java.io.InputStream;
    11. import java.util.List;
    12. public class MyBatisTest {
    13. // 增加一列
    14. @Test
    15. public void testInsert() throws IOException {
    16. SqlSession sqlSession = SqlSessionUtil.getSqlSession();
    17. UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    18. int result = userMapper.insertUser();
    19. System.out.println("结果是:"+result);
    20. sqlSession.close();
    21. }
    22. // 修改
    23. @Test
    24. public void TestUpdate(){
    25. SqlSession sqlSession = SqlSessionUtil.getSqlSession();
    26. UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    27. mapper.updateUser();
    28. sqlSession.close();
    29. }
    30. // 删除
    31. @Test
    32. public void TestDel(){
    33. SqlSession sqlSession = SqlSessionUtil.getSqlSession();
    34. UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    35. mapper.delUser();
    36. sqlSession.close();
    37. }
    38. // 查询
    39. @Test
    40. public void TestSelect(){
    41. SqlSession sqlSession = SqlSessionUtil.getSqlSession();
    42. UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    43. User user = mapper.getUserById();
    44. System.out.println(user);
    45. sqlSession.close();
    46. }
    47. // 查询
    48. @Test
    49. public void TestGetAllUsers(){
    50. SqlSession sqlSession = SqlSessionUtil.getSqlSession();
    51. UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    52. List users = mapper.getAllUser();
    53. // 循环输出List里面的内容
    54. users.forEach(System.out::println);
    55. sqlSession.close();
    56. }
    57. }

    2. 加入log4j日志文件

            日志的级别:

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

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

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

    1. <?xml version="1.0" encoding="UTF-8" ?>
    2. <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
    3. <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    4. <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
    5. <param name="Encoding" value="UTF-8" />
    6. <layout class="org.apache.log4j.PatternLayout">
    7. <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS}%m (%F:%L) \n" />
    8. </layout>
    9. </appender>
    10. <logger name="java.sql">
    11. <level value="debug" />
    12. </logger>
    13. <logger name="org.apache.ibatis">
    14. <level value="info" />
    15. </logger>
    16. <root>
    17. <level value="debug" />
    18. <appender-ref ref="STDOUT" />
    19. </root>
    20. </log4j:configuration>
  • 相关阅读:
    js循环语句
    Shell脚本之linux服务器磁盘利用率监控
    后台获取不到请求头中token信息的解决方法
    VS2019 工作界面颜色调整
    java如何变更字符串大小写
    ubuntu16 ARM 4G双网卡的上网配置
    C++从头捡起——2. 零散的知识
    glide set gif start stop
    Linux Nacos2.2.0版本集群搭建,常见报错问题解决
    2022·创新峰会回顾 | 擎创科技荣获CCID双料优秀成果奖
  • 原文地址:https://blog.csdn.net/qq_48051316/article/details/128053990