Mybatis优化

log4j日志显示

在pom.xml中的<dependencies>标签中加入

<!--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>

创建GetSqlsession类

快速获取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); //获取实体类 } }

引入properties文件

  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中的<configuration>中加入<properties>标签,resources属性内容为刚刚创建的文件名

<properties resource="data.properties"/>
  1. 修改mybatis-config.xml文件中的内容,使用${}用于接收properties文件中的内容,{}中的内容为properties文件中的key名

<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.user}"/>
<property name="password" value="${jdbc.pwd}"/>
</dataSource>
</environment>
</environments>

给类型起别名

  1. 在mybatis-config.xml中的<configuration>标签中的内部标签顺序
(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,
objectWrapperFactory?,reflectorFactory?,plugins?,environments?,
databaseIdProvider?,mappers?)
  1. 我们在<configuration>标签中加入<typeAliases>标签用于起别名,注意其位置在<properties>标签后面

<typeAliases>中的<typeAlias type="com.pojo.User" alias="user"></typeAlias>标签,用于添加单个的类别名,type属性为该类的全类名,alias属性为别名名称,如果不写alias默认别名为类名

<package>标签用于将该包下的全部类起默认别名,便于后面在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>

引入映射文件

  1. 在mybatis-config.xml的<mappers>中使用<mapper>标签或者<package>标签引入映射文件

<mappers>
<!--方式一,resource属性值为:UserMapper.xml文件的路径+文件名-->
<mapper resource="com/mapper/UserMapper.xml"/>
<!--
使用包的方式引入,会将包下的映射文件都引入
要求:1.UserMapper.xml文件的各个文件夹名必须和对应接口的各级文件夹一致
2. UserMapper.xml必须和其对应的接口名一致.
-->
<package name="com/mapper"/>
</mappers>

Mybatis优化的更多相关文章

  1. 05_ssm基础(二)之mybatis优化

    06.mybatis优化之Mybatis工具类提取 优化原则(见官方文档): mybatis工具类存放位置: mybatis工具类代码: package com.day01.ssm.mybatisDe ...

  2. Mybatis 优化:

    Mybatis 的优化: ** 第一个 对于数据库配置的优化: 创建一个 DB.properties 的文件 里面编写Key = value 形式的数据库信息 比如: driver = com.mys ...

  3. MyBatis——优化MyBatis配置文件中的配置

    原文:http://www.cnblogs.com/xdp-gacl/p/4264301.html 一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写 ...

  4. MyBatis优化技巧

    ☬配置日志文件 封装工具类 代码贴一下: package com.shxt.utils; import java.io.InputStream; import org.apache.ibatis.io ...

  5. mybatis优化配置

    在src下建立db.properties driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/mybatis name=root ...

  6. Mybatis原理和代码剖析

    参考资料(官方) Mybatis官方文档: https://mybatis.org/mybatis-3/ Mybatis-Parent : https://github.com/mybatis/par ...

  7. MyBatis快速上手与知识点总结

    目录 1.MyBatis概述 1.1 MyBatis概述 1.2 JDBC缺点 1.3 MyBatis优化 2.MyBatis快速入门 3.Mapper代理开发 3.1 Mapper代理开发概述 3. ...

  8. MyIbatis和Hibernate的区别--2019-04-26

    1.MyBatis 真正实现了java代码和sql的分离 2.Hibernate 是全自动的,MyBatis是半自动的 Hibernate实现了部分自动生成SQL 3.SQL优化上 MyBatis 强 ...

  9. 阿里P7Java最全面试296题:阿里天猫、蚂蚁金服含答案文档解析

    [阿里天猫.蚂蚁.钉钉面试专题题目加答案] 不会做别着急:文末有答案以及视频讲解,架构师资料 1. junit用法,before,beforeClass,after, afterClass的执行顺序 ...

  10. 【转】MyBatis学习总结(三)——优化MyBatis配置文件中的配置

    [转]MyBatis学习总结(三)——优化MyBatis配置文件中的配置 一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的con ...

随机推荐

  1. 彻底理解Python中的闭包和装饰器(下)

    上篇讲了Python中的闭包,本篇要讲的装饰器就是闭包的一个重要应用. 如果你还不知道什么是闭包,猛戳这里阅读:彻底理解Python中的闭包和装饰器(上) 什么是装饰器 装饰器的作用是在不修改函数定义 ...

  2. Visual Studio 2022 MAUI NU1105(NETSDK1005) 处理记录

    故障说明 MAUI项目是日常使用的项目,一直都好好的 某一天修改了几行代码后,突然项目无法编译了,提示NU1105错误 从Git重新拉取一份之前的代码编译也是同样的错误,经过半天的查阅,尝试了几种方案 ...

  3. 使用Springboot+redis+Vue实现秒杀的一个Demo

    目录 1.Redis简介 2.实现代码 3.启动步骤 4.使用ab进行并发测试 5.线程安全 6.总结 7.参考资料 1.Redis简介 Redis是一个开源的key-value存储系统. Redis ...

  4. 【Python】pip的镜像安装异常解决方案

    在安装pip的出现异常提示: ERROR: Could not find a version that satisfies the requirement pillow (from versions: ...

  5. day05-Vue02

    Vue02 7.修饰符 7.1基本说明 修饰符(Modifiers)是以.指明的后缀,指出某个指令以特殊方式绑定 官方文档:修饰符 Vue中的修饰符有: 事件修饰符 按键修饰符 系统修饰符 事件修饰符 ...

  6. python之路41 前端页面尝试 丑出新高度

    边框 p {/* 左边 */ font-size: 48px; border-left-width: 5px; border-left-style: dotted; /*点点边框*/ border-l ...

  7. 单向绑定vs双向绑定、单向数据流vs双向数据流

    参考文章:http://www.qb5200.com/article/482839.html 单双向绑定指的是View层跟Model层之间的映射关系 单向绑定vs双向绑定 react采用单向绑定,vu ...

  8. LVGL 中图片使用问题

    此笔记主要是记录在 LVGL 中使用图片的几种方式,以及使用过程中遇到的问题.最近在 ARM linux 中使用 LVGL 时,发现加载图片变得很卡,一开始还好,当连续加载的图片变多后,特别是动画的过 ...

  9. [WPF]将方法设为弃用

    [System.Obsolete("这是一条提示信息,表示这个方法弃用了,使用此方法会有一条Warning信息")] private void SaveDataMessage(Sa ...

  10. 根号分治简单笔记 | P3396 哈希冲突

    简要题意 你需要维护一个长度为 \(n\) 的序列 \(v\),支持: A x y 求整个序列中,所有模 \(x\) 为 \(y\) 的下标的元素的值,即: \[\sum_{i=0}^{\lfloor ...