MyBatis学习笔记
2023-09-14 09:01:04 时间
SqlSessionFactory最佳范围是应用范围。
SqlSession最佳范围是请求范围或方法范围,SqlSession的实例不能被共享,也是线程不安全的。
2 属性加载顺序
SqlSessionFactory最佳范围是应用范围。 SqlSession最佳范围是请求范围或方法范围,SqlSession的实例不能被共享,也是线程不安全的。 2 属性加载顺序
import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class Main { public static void main(String[] args) { SqlSession session = null; try { InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); session = sqlSessionFactory.openSession(); // 1st Student student = session.selectOne("club.chuxing.tech.learn.mybatis.StudentMapper.selectStudent", 8); // 2nd // 若mybatis-config.xml未配置mapper // sqlSessionFactory.getConfiguration().addMapper(StudentMapper2.class); // StudentMapper2 mapper = session.getMapper(StudentMapper2.class); // Student student = mapper.selectStudent(8); System.out.println(student.getName() + ", " + student.getAge()); } catch (Exception ex) { ex.printStackTrace(); } finally { session.close(); } 3.2 Mappers配置的区别
MyBatis 学习笔记(八)---源码分析篇--SQL 执行过程详细分析 在面试中我们经常会被到MyBatis中 #{} 占位符与${}占位符的区别。大多数的小伙伴都可以脱口而出#{} 会对值进行转义,防止SQL注入。而${}则会原样输出传入值,不会对传入值做任何处理。本文将通过源码层面分析为啥#{} 可以防止SQL注入。
MyBatis 学习笔记(六)---源码分析篇---映射文件的解析过程(一) 前面几篇我们介绍了MyBatis中配置文件的解析过程。今天我们接着来看看MyBatis的另外一个核心知识点 映射文件的解析。本文将重点介绍 cache 节点和 cache-ref 的解析。
MyBatis 学习笔记(五)---MyBatis通用类型处理器的实现与自动注册 实际项目中,我们经常要处理一些枚举类型的数据。例如:订单的状态就分为已下单,已付款,已发货,订单完成等等很多状态,数据库中我们一般只存储的一个数字表示各种状态。但是,前台显示的话就需要显示名称给用户看,所以这中间就涉及到一个转化。我们见过太多了在前端通过 if, else 写死判断的。这样初期没啥,后期难以扩展及维护。针对这种情况,我们思考下能不能直接将枚举直接返回给前端,让前端显示时取value, 保存时传入key?这样的前端就不用写一堆判断了。
MyBatis 学习笔记(四)---源码分析篇---配置文件的解析过程(二) 接上一篇MyBatis 学习笔记(四)—源码分析篇—配置文件的解析过程(一) 。上一篇我们介绍了properties 和settings配置的解析过程,今天我们接着来看看其他常用属性的解析过程,重点介绍typeAliases,environments等配置的解析。
MyBatis 学习笔记(四)---源码分析篇---配置文件的解析过程(一) 前几篇我们介绍了MyBatis的一些基本特性,对MyBatis有了个初步了解。接下来,我们将着手来分析一下MyBatis的源码,从源码层面复盘MyBatis的执行流程。
MyBatis 学习笔记(三)MyBatis与Spring 和SpringBoot整合 接上一篇MyBatis 学习笔记(二)MyBatis常用特性运用 在真实的项目我们几乎不会将MyBatis 单独运用到项目中,而是将其整合到Spring框架或者SpringBoot中,本文将通过两个demo演示MyBatis 与Spring和SpringBoot的整合。
MyBatis 学习笔记(二)MyBatis常用特性运用 接上一篇MyBatis 学习笔记(一)MyBatis的简介与使用以及与其他ORM框架的比较,今天我们接着来学习MyBatis的一些常用特性,包括别名,类型处理器,动态SQL
MyBatis 学习笔记(一)MyBatis的简介与使用以及与其他ORM框架的比较 MyBatis 前身是Apache基金会的开源项目iBatis,在2010年该项目脱离Apache基金会并正式更名为MyBatis,在2013年11月,MyBatis迁移到了GitHub。
Java Spring Boot开发实战系列课程【第6讲】:Spring Boot 2.0实战MyBatis与优化(Java面试题) 立即下载
SqlSessionFactory最佳范围是应用范围。 SqlSession最佳范围是请求范围或方法范围,SqlSession的实例不能被共享,也是线程不安全的。 2 属性加载顺序
properties元素体内指定的元素– 类路径资源或properties元素的url属性中加载的属性– 作为方法参数传递的属性
(后读取的属性,会覆盖任一已经存在的完全一样的属性)
?xml version="1.0" encoding="UTF-8" ? !DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" mapper namespace="club.chuxing.tech.learn.mybatis.StudentMapper" select id="selectStudent" parameterType="int" resultType="club.chuxing.tech.learn.mybatis.Student" select * from student where id = #{id} /select /mapper
接口文件
import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class Main { public static void main(String[] args) { SqlSession session = null; try { InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); session = sqlSessionFactory.openSession(); // 1st Student student = session.selectOne("club.chuxing.tech.learn.mybatis.StudentMapper.selectStudent", 8); // 2nd // 若mybatis-config.xml未配置mapper // sqlSessionFactory.getConfiguration().addMapper(StudentMapper2.class); // StudentMapper2 mapper = session.getMapper(StudentMapper2.class); // Student student = mapper.selectStudent(8); System.out.println(student.getName() + ", " + student.getAge()); } catch (Exception ex) { ex.printStackTrace(); } finally { session.close(); } 3.2 Mappers配置的区别
使用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 !-- Continue going here -- environments default="development" environment id="development" transactionManager type="JDBC" / dataSource type="POOLED" property name="driver" value="com.mysql.jdbc.Driver" / property name="url" value="jdbc:mysql://localhost:3306/test" / property name="username" value="root" / property name="password" value="meituan" / /dataSource /environment /environments mappers mapper resource="StudentMapper.xml" / /mappers /configuration
使用接口文件的方式:
MyBatis 学习笔记(八)---源码分析篇--SQL 执行过程详细分析 在面试中我们经常会被到MyBatis中 #{} 占位符与${}占位符的区别。大多数的小伙伴都可以脱口而出#{} 会对值进行转义,防止SQL注入。而${}则会原样输出传入值,不会对传入值做任何处理。本文将通过源码层面分析为啥#{} 可以防止SQL注入。
MyBatis 学习笔记(六)---源码分析篇---映射文件的解析过程(一) 前面几篇我们介绍了MyBatis中配置文件的解析过程。今天我们接着来看看MyBatis的另外一个核心知识点 映射文件的解析。本文将重点介绍 cache 节点和 cache-ref 的解析。
MyBatis 学习笔记(五)---MyBatis通用类型处理器的实现与自动注册 实际项目中,我们经常要处理一些枚举类型的数据。例如:订单的状态就分为已下单,已付款,已发货,订单完成等等很多状态,数据库中我们一般只存储的一个数字表示各种状态。但是,前台显示的话就需要显示名称给用户看,所以这中间就涉及到一个转化。我们见过太多了在前端通过 if, else 写死判断的。这样初期没啥,后期难以扩展及维护。针对这种情况,我们思考下能不能直接将枚举直接返回给前端,让前端显示时取value, 保存时传入key?这样的前端就不用写一堆判断了。
MyBatis 学习笔记(四)---源码分析篇---配置文件的解析过程(二) 接上一篇MyBatis 学习笔记(四)—源码分析篇—配置文件的解析过程(一) 。上一篇我们介绍了properties 和settings配置的解析过程,今天我们接着来看看其他常用属性的解析过程,重点介绍typeAliases,environments等配置的解析。
MyBatis 学习笔记(四)---源码分析篇---配置文件的解析过程(一) 前几篇我们介绍了MyBatis的一些基本特性,对MyBatis有了个初步了解。接下来,我们将着手来分析一下MyBatis的源码,从源码层面复盘MyBatis的执行流程。
MyBatis 学习笔记(三)MyBatis与Spring 和SpringBoot整合 接上一篇MyBatis 学习笔记(二)MyBatis常用特性运用 在真实的项目我们几乎不会将MyBatis 单独运用到项目中,而是将其整合到Spring框架或者SpringBoot中,本文将通过两个demo演示MyBatis 与Spring和SpringBoot的整合。
MyBatis 学习笔记(二)MyBatis常用特性运用 接上一篇MyBatis 学习笔记(一)MyBatis的简介与使用以及与其他ORM框架的比较,今天我们接着来学习MyBatis的一些常用特性,包括别名,类型处理器,动态SQL
MyBatis 学习笔记(一)MyBatis的简介与使用以及与其他ORM框架的比较 MyBatis 前身是Apache基金会的开源项目iBatis,在2010年该项目脱离Apache基金会并正式更名为MyBatis,在2013年11月,MyBatis迁移到了GitHub。
Java Spring Boot开发实战系列课程【第6讲】:Spring Boot 2.0实战MyBatis与优化(Java面试题) 立即下载
相关文章
- mybatis-plus允许自定义handlerType的set
- MyBatis 分页查询
- Mybatis分页查询(通过SQL分页实现)[通俗易懂]
- 《深入理解mybatis原理》 MyBatis的一级缓存实现详解 及使用注意事项
- MyBatis-多表查询(一对多)
- MyBatis注解(单表)
- 一起学习Spring boot 2.1.X | 第五篇:Mybatis Druid 数据库(注解版)「建议收藏」
- Mybatis学习笔记
- Mybatis | Mybatis学习笔记(下)
- MyBatis框架:第十章:mybatis缓存
- MyBatis-Plus 如何实现连表查询[通俗易懂]
- MyBatis框架:第五章:源码解析及Mapper接口方式的mybatis的增,删,改,查实现
- MyBatis框架:第三章:传统方式mybatis的增,删,改,查实现
- Mybatis面试问题锦集
- Mybatis 一对多 结果集映射 简单入门 易懂
- Mybatis框架中jdbcType=”DATE” 和 jdbcType=”TIMESTAMP” 两种类型的区别
- MyBatis框架:第二章:传统mybatis的hello world 示例
- MyBatis-Plus 入门 【SpringBoot版】
- 一文带你快速搭建框架(最全MyBatis笔记)
- MyBatis-Plus联表查询(Mybatis-Plus-Join)
- Mybatis模糊查询——三种定义参数方法和聚合查询、主键回填
- MyBatis学习笔记(二) 关联关系详解编程语言
- MyBatis学习笔记(四) 注解详解编程语言