Mybatis优化
阅读原文时间:2023年07月08日阅读:1

Mybatis优化

在pom.xml中的标签中加入

<!--log4j日志 -->
 <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

在resources文件夹下创建log4j.xml

<?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"></level>
    </logger>

    <logger name="org.apache.ibatis">
        <level value="info"></level>
    </logger>

    <root>
        <level value="debug"></level>
        <appender-ref ref="STDOUT"/>
    </root>

</log4j:configuration>

快速获取SqlSession,不在每次都定义这么多项

package com.getsqlsession;
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 M_SelSession {
    public static SqlSession getSqlSession() {
        InputStream is=null;
        try {
             //加载核心配置文件
            is = Resources.getResourceAsStream("mybatis-config.xml");
        } catch (IOException ioException) {
            ioException.printStackTrace();
        }finally {
            //工厂模式,获取SqlSessionFactoryBuilder
            SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
            //获取sqlSessionFactory
            SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
            //通过工厂获取sqlSession
            SqlSession sqlSession = sqlSessionFactory.openSession(true); //自动提交事务
            return sqlSession;
        }

    }

}

调用时

package com.test;
import com.getsqlsession.M_SelSession;
import com.mapper.UserMapper;
import com.pojo.User;
import org.apache.ibatis.session.SqlSession;

import java.util.List;

public class Test {

    public static void main(String[] args) {
        SqlSession sqlSession= M_SelSession.getSqlSession(); //快速获取sqlSession
        UserMapper userMapper=sqlSession.getMapper(UserMapper.class); //获取实体类

    }

}
  1. 在resources下创建data.properties文件

  2. 在文件中写入

    jdbc.Driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/test
    jdbc.user=root
    jdbc.pwd=3124

注意将user和pwd的内容改为自己登陆的MySQL用户名和密码

  1. 在mybatis-config.xml中的中加入标签,resources属性内容为刚刚创建的文件名

  2. 修改mybatis-config.xml文件中的内容,使用${}用于接收properties文件中的内容,{}中的内容为properties文件中的key名

  3. 在mybatis-config.xml中的标签中的内部标签顺序

    (properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,
    objectWrapperFactory?,reflectorFactory?,plugins?,environments?,
    databaseIdProvider?,mappers?)

  4. 我们在标签中加入标签用于起别名,注意其位置在标签后面

中的标签,用于添加单个的类别名,type属性为该类的全类名,alias属性为别名名称,如果不写alias默认别名为类名

标签用于将该包下的全部类起默认别名,便于后面在mapper.xml中使用

  <!--给类起别名,在mapper.xml中可以对于查询的resultType直接使用别名进行使用,不需要全类名了-->
    <typeAliases>
    <typeAlias type="com.pojo.User" alias="user"></typeAlias>

        <package name="com.pojo"/>
    </typeAliases>
  1. 在mapper.xml中使用,在查询时直接使用user作为resultType属性的内容,这里的user是我们上面起的别名,也是User类的默认别名,不区分大小写.

    <select id="selectAllUser" resultType="User">
        select * from user
    </select>
    
     <select id="selectUserById" resultType="user">
        select * from user where userid=2
    </select>
  2. 在mybatis-config.xml的中使用标签或者标签引入映射文件