• Mybatis框架--优化过程


    0. 原代码预览

    简单实现在数据库中插入数据

    public void testInsert() throws IOException {
            //获取核心配置文件的输入流
            InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
            //获取SqlSessionFactoryBuilder对象
            SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
            //获取SqlSessionFactory对象
            SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
            //获取sql的回话对象sqlSession,是Mybatis提供的操作数据库的对象
            SqlSession sqlSession = sqlSessionFactory.openSession();
        
        	//获取UserMapper的代理实现类对象
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
            //调用mapper接口中的方法,实现添加用户信息的功能
            int result = mapper.insertUser();
            System.out.println("结果:"+result);
          
            //提交事务
            sqlSession.commit();
        
            //关闭sqlSession对象
            sqlSession.close();
        }
    
    • SqlSession:代表Java程序和数据库之间的会话。(HttpSession是Java程序和浏览器之间的会话)
    • SqlSessionFactory:是“生产”SqlSession的“工厂”。

    1. 简化代码

    根据两个一致性,可以将获取UserMapper的代理实现类对象调用mapper接口中的方法两部分代码写为:

    //例如我的代码:
    int result = sqlSession.insert("com.atguigu.mybatis.insertUser");//参数是:全类名+方法名。也就是映射文件中sql的id位置
    

    2. 自动提交sql事务

    每次都需要手动提交SQL事务sqlSession.commit()。可以在获取sql的回话对象sqlSession的代码:sqlSessionFactory.openSession()加一个参数:

    SqlSession sqlSession = sqlSessionFactory.openSession(true);
    

    3. 加入log4j日志功能

    • 在pom.xml中加入依赖

      
      <dependency>
      	<groupId>log4jgroupId>
      	<artifactId>log4jartifactId>
      	<version>1.2.12version>
      dependency>
      
    • 加入log4j的配置文件

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

      
      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>
      

      重新运行代码,查看日志功能:

      image-20220818163606862

  • 相关阅读:
    C/C++|基于回调函数实现异步操作
    [论文阅读] Adversarial Latent Autoencoders
    26-Docker-常用命令详解-docker rmi
    [附源码]SSM计算机毕业设计疫情状态下病房管理平台JAVA
    记录一次Powerjob踩的坑(Failed to deserialize message)
    【带你学c带你飞】1day 第2章 (练习2.2 求华氏温度 100°F 对应的摄氏温度
    VS2022 C++ 追加hosts屏蔽恶意网址脚本V2.0
    多线程下的单例设计模式(新手必看!!!)
    Java教程:二进制数组与十六进制字符串之间的相互转换
    Elasticsearch(简称ES)简易介绍
  • 原文地址:https://www.cnblogs.com/tianaqiang/p/16599371.html