首页
友链
Search
1
01-快捷命令
143 阅读
2
寒假计划
134 阅读
3
浏览器规范(ES module)和 node.js 规范(Common JS)
129 阅读
4
03-概念解析
126 阅读
5
学期计划(大三下学期)
115 阅读
计划
算法
面试题
运维
Ansible
Linux
数据库
neo4j
共用
web 前端
CSS
JavaScript
Vue
Node.js
英语单词
工程化
JAVA
mysql
收获
面试
mybatis
Spring
基础
spring-mvc
问题
项目
宠物乐园
速查
问题集
git
学习
sql
二阶段
登录
Search
标签搜索
spring
mysql
vue
ansible
CSS
面试
计划
收获
JAVA面试题
spring-mvc
Starrylsi
累计撰写
106
篇文章
累计收到
40
条评论
首页
栏目
计划
算法
面试题
运维
Ansible
Linux
数据库
neo4j
共用
web 前端
CSS
JavaScript
Vue
Node.js
英语单词
工程化
JAVA
mysql
收获
面试
mybatis
Spring
基础
spring-mvc
问题
项目
宠物乐园
速查
问题集
git
学习
sql
二阶段
页面
友链
搜索到
6
篇与
的结果
2024-10-02
06-Mybatis-我学到了什么
总结Mybatissqlsession 会话级别的一级缓存,mapper应用级别的二级缓存mybatis的常用配置参数为什么要使用mybatis动态sql的帮我们完成了什么if 判断choose when otherwise 从多个条件中选取一个foreach 集合进行遍历where 元素只会在子元素返回任何内容的情况下才插入 “WHERE” 子句。而且,若子句的开头为 “AND” 或 “OR”,where 元素也会将它们去除。set 元素会动态地在行首插入 SET 关键字,并会删掉额外的逗号(这些逗号是在使用条件语句给列赋值时引入的)。trim 可以动态在包含的语句前面和后面添加内容。也可以去掉前面或者后面给定的内容 prefix 前面添加内容 suffix 后面添加内容 suffixOverrides 去掉的后面内容 prefixOverrides 去掉的前面内容理解mybatis的缓存缓存:缓存指的是将经常访问的数据保存到一个高速的数据存储区。缓存的目的就是为了快速访问一级缓存: 指的是将数据保存一以SqlSession中(同一个SqlSession)二级缓存: 指的是将数据保存到mapper中(同一个sqlSessionFactory)一级缓存失效的四种情况1.不在同一个SqlSession对象中2.执行语句的参数不同。缓存中也不存在数据。3.执行增,删,改,语句,会清空掉缓存4.手动清空缓存数据二级缓存使用步骤myBatis的二级缓存默认是不开启的。我们需要在mybatis的核心配置文件中配置setting选项 和 在Mapper的配置文件中加入cache标签。并且需要被二级缓存的对象必须要实现java的序列化接口。缓存的使用顺序说明当我们执行一个查询语句的时候。mybatis会先去二级缓存中查询数据。如果二级缓存中没有。就到一级缓存中查找。如果二级缓存和一级缓存都没有。就发sql语句到数据库中去查询。查询出来之后马上把数据保存到一级缓存中。当SqlSession关闭的时候,会把一级缓存中的数据保存到二级缓存中。
2024年10月02日
10 阅读
0 评论
0 点赞
2024-09-10
05-mybatis工作原理
暂无简介
2024年09月10日
9 阅读
0 评论
0 点赞
2024-09-10
04_一对多_学生班级
目标: 能够自己实现学生班级案例,完成一对多查询了解:collection 标签专门用来映射集合属性实现分步查询的关键就是将 join on连接去掉,在collection添加select="查询的xml全类名,比立即加载多写一个接口"注: 代码仅供理解1.数据库表##1. 创建班级表 create table t_clazz( `id` int primary key auto_increment, `name` varchar(50) ); ##1.2 插入班级信息 insert into t_clazz(`name`) values('javaEE20220228'); insert into t_clazz(`name`) values('javaEE20220325'); insert into t_clazz(`name`) values('javaEE20220420'); insert into t_clazz(`name`) values('javaEE20220515'); ##1.3 创建学生表 create table t_student( `id` int primary key auto_increment, `name` varchar(50), `clazz_id` int, foreign key(`clazz_id`) references t_clazz(`id`) ); ##1.4 插入班级信息 insert into t_student(`name`,`clazz_id`) values('stu0228_1',1); insert into t_student(`name`,`clazz_id`) values('stu0228_2',1); insert into t_student(`name`,`clazz_id`) values('stu0228_3',1); insert into t_student(`name`,`clazz_id`) values('stu0325_1',2); insert into t_student(`name`,`clazz_id`) values('stu0325_2',2); insert into t_student(`name`,`clazz_id`) values('stu0420_1',3);2.config,lib3.实现clazz的分步查询public interface ClazzDAO { public Clazz queryClazzById(int id); /** * 我要分两次查询, * 一次只查常用数据,班级信息<br/> * 当我需要使用学生信息的时候。再查询一次<br/> */ public Clazz queryClazzTwoStep(int id); } <resultMap type="com.zhuama.pojo.Clazz" id="queryClazzByIdForTwoStepLazy_resultMap"> <id column="id" property="id"/> <result column="name" property="name"/> <!-- collection 是专门映射集合的标签 property 属性设置你要设置和集合的属性名 ofType是 这个集合中每个元素的具体类型 select 是你要查询的语句 column 属性设置你要执行的select对应的查询语句需要的参数列 --> <collection property="stuList" ofType="com.zhuama.pojo.Student" select="com.zhuama.dao.StudentMapper.queryStudentsByClazzId" column="id" /> </resultMap> <!-- public Clazz queryClazzByIdForTwoStepLazy(int id); --> <select id="queryClazzByIdForTwoStepLazy" resultMap="queryClazzByIdForTwoStepLazy_resultMap"> select id,name from t_clazz where id = #{id} </select> 4.实现student的分步查询
2024年09月10日
20 阅读
0 评论
0 点赞
2024-09-10
03_一对一_锁钥_分步查询
目标: 熟练使用自定义resultmap关键: 1.不使用join on连接两个表 2.association的select="第二步查询的方法全类名"3.使用association1. 创建一对一数据库表1.1 创建锁表create table t_lock( `id` int primary key auto_increment, `name` varchar(50) );1.2 创建钥匙表create table t_key( `id` int primary key auto_increment, `name` varchar(50), `lock_id` int , foreign key(`lock_id`) references t_lock(`id`) );1.3 插入初始化数据insert into t_lock(`name`) values('阿里巴巴'); insert into t_lock(`name`) values('华为'); insert into t_lock(`name`) values('联想'); insert into t_key(`name`,`lock_id`) values('马云',1); insert into t_key(`name`,`lock_id`) values('任正非',2); insert into t_key(`name`,`lock_id`) values('柳传志',3);2. 引入配置文件,和需要的库,创建接口config/jdbc.properis config/log4j.properties config/mybatis-config.xml lib/druid-1.1.10.jar lib/log4j-1.2.17.jar lib/mybatis-3.4.1.jar lib/mysql-connector-java-5.1.37-bin.jar3. 编写xml文件3.1 associationassociation 标签专门映射Bean对象中的子对象(一个Bean)专门用来配置一对一标签<mapper namespace="top.starrylsi.dao.KeyDAO"> <!-- 如果类中存在组合的情况 可以使用resultMap 将组合中的内容指定给对应的属性 column 需要sql中的列名 property 需要类中属性名.自身属性的 通常情况下 为了保证每个对象之间存在独立类关系 在resultMap标签中添加 对应关系 有两种关系标签 : 一对一标签 : <association> <association>标签中的 property属性 1.需要指定类中的组合属性名 2.需要指定该属性的类型 javaType="全类名" --> <!-- <resultMap type="key" id="resultMap_queryKeyById"> <id column="id" property="id"/> <result column="name" property="name" /> <result column="lock_id" property="lock.id"/> <result column="lock_name" property="lock.name"/> </resultMap> --> <resultMap type="top.starrylsi.pojo.Key" id="resultMap_queryKeyById"> <id column="id" property="id"/> <result column="name" property="name"/> <association property="lock" javaType="top.starrylsi.pojo.Lock"> <id column="lock_id" property="id"/> <result column="lock_name" property="name"/> </association> </resultMap> <select id="queryKeyById" resultMap="resultMap_queryKeyById"> select k.id, k.name, l.id lock_id ,l.name lock_name from t_key k join t_lock l on k.lock_id = l.id where k.id = #{id} </select> </mapper>3.2 分页查询 <resultMap type="top.starrylsi.pojo.Key" id="queryKeyByIdTwoStep_resultMap"> <id column="id" property="id"/> <result column="name" property="name"/> <association property="lock" javaType="top.starrylsi.pojo.Lock" select="top.starrylsi.dao.LockDAO.queryLockById" column="lock_id"></association> </resultMap> <select id="queryKeyByIdTwoStep" resultMap="queryKeyByIdTwoStep_resultMap"> select id,name,lock_id from t_key where id = #{id} </select>延迟加载在一定程序上可以减少很多没有必要的查询。给数据库服务器提升性能上的优化。 要启用延迟加载,需要在mybatis-config.xml配置文件中,添加如下两个全局的settings配置。 <!-- 打开延迟加载的开关 --> <setting name="lazyLoadingEnabled" value="true" /> <!-- 将积极加载改为消极加载 按需加载 --> <setting name="aggressiveLazyLoading" value="false"/> 错误点mybatis-config中的mapper 路径用的是 resource,resouce只能读取一个文件,而class可以读取这个类的所有文件junit 版本号与 代码写法不一样在实现分页查询的时候,由于LockDAO的mapper没有在mybatis-config中声明而报错
2024年09月10日
13 阅读
0 评论
0 点赞
2024-09-09
02-mybatis 配置和方法参数
目标熟练配置mybatis-config.xml{dotted startColor="#6c4747" endColor="#1989fa"/}方法参数1.properis 配置属性<properties resource="jdbc.properties" />2.settings 配置设置<settings> <!-- 自动识别驼峰命名和数据库命名 --> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings>3.typeAliases 配置别名<typeAliases> <!-- 单独配置指定的类 和它的别名 --> <!-- <typeAlias type="com.zhuama.pojo.User" alias="user"/> --> <!-- 指定包中的所有类 都含有别名 默认是类名首字母小写 可以在类中使用@Alias注解给类起别名 但一般不推荐 --> <package name="com.zhuama.pojo"/> </typeAliases>4.typeHandler 类型处理器5.environments 环境配置<environments default="test"> <!-- 开发环境 --> <environment id="development"> <transactionManager type="JDBC" /> <!-- dataSource 数据源 POOLED 表示使用数据库连接池 --> <dataSource type="POOLED"> <property name="driver" value="${driverClassName}" /> <property name="url" value="${url}" /> <property name="username" value="${username}" /> <property name="password" value="${password}" /> </dataSource> </environment> <!-- 测试环境 --> <environment id="test"> <!-- 配置事务管理器 --> <transactionManager type="JDBC" /> <!-- 配置数据库连接池 --> <dataSource type="com.zhuama.factory.DruidFactory" /> </environment> </environments>6.配置不同数据库执行对应的sql<!-- 配置自动识别不同的数据库执行不同的sql语句 --> <databaseIdProvider type="DB_VENDOR"> <property name="Oracle" value="oracle"/> <property name="MySQL" value="mysql"/> </databaseIdProvider>7.加载sql文件的配置<mappers> <!-- 直接加载指定的xml文件 --> <!-- <mapper resource="com/zhuama/mapper/UserMapper.xml" /> --> <!-- 使用文件路径加载指定的xml --> <!-- <mapper url="file:///D:\0422SSMWorkspace\mybatis-day02-setting\src\com\zhuama\mapper\UserMapper.xml" /> --> <!-- 使用类名加载xml 要求文件名必须与对应的接口名一致 --> <!-- <mapper class="com.zhuama.mapper.UserMapper" /> --> <!-- 读取指定包中的xml --> <package name="com.zhuama.mapper"/> </mappers>8.使用注解实现增删改查mybatis-config.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> <!-- 配置文件标签 --> <properties resource="jdbc.properties" /> <!-- 配置mybatis的设置功能 --> <settings> <!-- 自动识别驼峰命名和数据库命名 --> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings> <!-- 配置别名 --> <typeAliases> <!-- 单独配置指定的类 和它的别名 --> <!-- <typeAlias type="com.zhuama.pojo.User" alias="user"/> --> <!-- 指定包中的所有类 都含有别名 默认是类名首字母小写 可以在类中使用@Alias注解给类起别名 但一般不推荐 --> <package name="com.zhuama.pojo"/> </typeAliases> <environments default="test"> <!-- 开发环境 --> <environment id="development"> <transactionManager type="JDBC" /> <!-- dataSource 数据源 POOLED 表示使用数据库连接池 --> <dataSource type="POOLED"> <property name="driver" value="${driverClassName}" /> <property name="url" value="${url}" /> <property name="username" value="${username}" /> <property name="password" value="${password}" /> </dataSource> </environment> <!-- 测试环境 --> <environment id="test"> <!-- 配置事务管理器 --> <transactionManager type="JDBC" /> <!-- 配置数据库连接池 --> <dataSource type="com.zhuama.factory.DruidFactory" /> </environment> </environments> <!-- 引入sql语句对应的配置文件 --> <!-- 配置自动识别不同的数据库执行不同的sql语句 --> <databaseIdProvider type="DB_VENDOR"> <property name="Oracle" value="oracle"/> <property name="MySQL" value="mysql"/> </databaseIdProvider> <mappers> <!-- 直接加载指定的xml文件 --> <!-- <mapper resource="com/zhuama/mapper/UserMapper.xml" /> --> <!-- 使用文件路径加载指定的xml --> <!-- <mapper url="file:///D:\0422SSMWorkspace\mybatis-day02-setting\src\com\zhuama\mapper\UserMapper.xml" /> --> <!-- 使用类名加载xml 要求文件名必须与对应的接口名一致 --> <!-- <mapper class="com.zhuama.mapper.UserMapper" /> --> <!-- 读取指定包中的xml --> <package name="com.zhuama.mapper"/> </mappers> </configuration>
2024年09月09日
11 阅读
0 评论
0 点赞
1
2