zl程序教程

您现在的位置是:首页 >  后端

当前栏目

MyBatis学习笔记

2023-09-14 09:01:04 时间
SqlSessionFactory最佳范围是应用范围。 SqlSession最佳范围是请求范围或方法范围,SqlSession的实例不能被共享,也是线程不安全的。 2 属性加载顺序
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面试题) 立即下载