javaEE互联网轻量级开发笔记
文章平均质量分 70
仰望天花板
这个作者很懒,什么都没留下…
展开
-
值得一看——Mybatis动态sql的使用——不是很深但是很细
在实际开发时,如需要根据姓名或者备注去查询时,当姓名为空再去使用姓名作为条件查询时就不太合适了,这时候通常其他框架或java代码去判断,但可读性差。Mybatis提供了动态sql,仅仅需要几个XML的元素即可完成,虽然Mybatis也提供了注解的形式,但对于较为复杂的sql而言可读性太差,所以不推荐使用。动态SQL实际使用的元素并不多,但是它们带来了灵活性,减少许多工作量的同时,也在很大程度上提高了程序的可读性和可维护性。1.创建POJO及Mapper@Datapublic class Ro原创 2022-01-24 22:08:03 · 1190 阅读 · 0 评论 -
Java使用Mybatis调用存储过程以及简单使用游标—重点都在XML文件中
存储过程:它是数据库预先编译好的一个sql,可以重复调用,无需二次编译,如果不太清楚可以试着理解为在Java中写的一个方法。1.存储过程参数存储过程定义了三个参数:IN:输入参数,即外界传入的参数 OUT:输出参数,即经过计算返回的参数 INOUT:输入输出参数,即外界传入的参数,经过计算又返回的参数2.IN,OUT,IN OUT演示这里使用Oracle数据库进行编写存储过程假如我们要求输入一个名字查询条数和目前时间,根据输入id返回其notecreate or repl原创 2022-01-17 20:01:19 · 2765 阅读 · 0 评论 -
详解mybatis的一二级缓存以及缓存失效原因
数据库的大部分场景下是从磁盘读取,如果数据从内存进行读取,速度较比磁盘要快得多。但因为内存的容量有限,所以一般只会把使用和查询较多的数据缓存起来,以便快速反应,其他使用率不太多的继续存放在磁盘。mybatis分为一级缓存和二级缓存1.一级缓存一级缓存存放在SqlSqeeion上,默认开启1.1pojo@Datapublic class Role{ private Long id; private String roleName; private String note;}原创 2022-01-10 21:19:55 · 2892 阅读 · 0 评论 -
多对多级联以及一对多和多对多级联为什么要使用关联表
目录1.pojo清单2.Mapper接口清单3.XML文件4.测试多对多级联5.为什么使用关联表多对多级联是一种非常复杂的级联关系,一般采用两个一对多来进行处理例如:现实中有许多用户,用户又归属于一些角色,这样一个用户可以对应多个角色,而一个角色又可以由多个用户担当,这个时候用户和角色是以一张用户角色表建立关联关系,这样用户和角色就是多对多的关系。1.pojo清单1.1用户@Datapublic class User2 { private Long id;原创 2022-01-09 20:25:55 · 1545 阅读 · 0 评论 -
JavaEE互联网轻量级框架整合开发笔记:mybatis中的fetchType属性怎么使用
目录懒加载:fetchType上一篇我们说了如何使用mybatis中的懒加载机制解决级联造成的N+1问题,但同时也有一个问题,我们没有办法去个性化的编写代码。懒加载:lazyLoadingEnabled为true时,所有的关联对象都不会加载aggressiveLazyLoading为false时,只有当调用具有懒加载对象的属性时才会加载不理解的话就先看这篇如何利用mybatis的懒加载机制解决级联造成的N+1问题_m0_56058975的博客-CSDN博客例如现在有用户,订单原创 2021-12-23 20:35:47 · 1120 阅读 · 0 评论 -
如何利用mybatis的懒加载机制解决级联造成的N+1问题
目录1.代码演示1.1创建POJO1.2创建Mapper接口1.3创建XML映射文件1.4创建mybatis-config.xml文件1.5测试未使用lazyLoadingEnabled和aggressiveLazyLoading2.lazyLoadingEnabled和aggressiveLazyLoading2.1配置lazyLoadingEnabled并测试2.2配置aggressiveLazyLoading并测试什么是N+1:例如我们有用户Use...原创 2021-12-22 23:20:37 · 597 阅读 · 0 评论 -
Mapped Statements collection does not contain value for mybatis03.mapper.TaskMapper.getTask
中文意思:映射语句集合不包含mybatis03.mapper.TaskMapper.getTask的值org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for mybatis03.mapper.Tas.原创 2021-12-21 22:44:21 · 1418 阅读 · 0 评论 -
一分钟明白:EnumOrdinalTypeHandler和EnumTypeHandler的区别
在开发用,如果使用枚举而又没有在配置中指定类型,mybatis默认使用EnumTypeHandler。EnumTypeHandler和EnumOrdinalTypeHandler区别主要在于数据库存取类型不一样。原创 2021-12-20 21:51:58 · 1442 阅读 · 0 评论 -
一分钟明白:mybatis自定义别名的三种方式和自定义TypeHandler类型转换器
1.自定义别名1.1自定义类别名自定义别名可以让我们在xml文件中写sql文件时,减少一些繁琐而又没必要写的一些代码例如: <select id="getRole" parameterType="long" resultType="mybatis02.pojo.Role"> select id, role_name, note from t_role where id = #{id} </select>我们在写select查询时需要指..原创 2021-12-15 22:21:54 · 2563 阅读 · 0 评论 -
一招解决:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): 找不到Mapper里的方法
一招解决 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): 找不到Mapper里的方法的错误原创 2021-12-14 22:00:08 · 1572 阅读 · 0 评论 -
Mybatis使用properties配置的3种方式,其中第二种最常用
一般而言,MyBatis提供了3种方式让我们使用properties,它们是:●property子元素。●properties文件。●程序代码传递。但是需要注意的是,MyBatis 配置项的顺序不能颠倒。如果颠倒了它们的顺序,那么在MyBatis启动阶段就会发生异常,导致程序无法运行。1.使用properties下的子元素<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLI..原创 2021-12-13 21:13:33 · 6528 阅读 · 0 评论 -
举一个简单的例子,轻松搞懂所谓的“观察者模式”
看上面那些可能不太容易理解,简单举个例子,假如有一个产品列表,当这个产品列表更新的时候就会同步到一些电商平台,最简单的可能会用if进行判断,当产品列表更新就同步,例如下图:原创 2021-12-09 21:39:16 · 766 阅读 · 0 评论 -
简单理解JDK动态代理使用拦截器和责任链模式
目录1.拦截器1.1在JDK代理中使用拦截器:2.责任链模式2.1定义责任链拦截器接口由于动态代理一般都比较难理解,程序设计者会设计一个拦截器接口供开发者使用,开发者只要知道拦截器接口的方法、含义和作用即可,无须知道动态代理是怎么实现的。用JDK动态代理来实现一个拦截器的逻辑,为此先定义拦截器接口Interceptor1.拦截器package service;import java.lang.reflect.Method;public interface...原创 2021-12-08 23:46:58 · 781 阅读 · 0 评论 -
一文搞懂两种最常用的动态代理:JDK和CGLIB
目前最常用两种动态代理就是JDK和CGLIB,一种是JDK自带的,一种是三方技术。两者区别:JDK:JDK动态代理是java.lang.reflect.*包提供的方式,它必须借助一个接口才能产生代理对象。CGLIB:在一些不能提供接口的环境中,只能采用其他第三方技术,比如CGLIB动态代理。它的优势在于不需要提供接口,只要一个非抽象类就能实现动态代理。1.JDK代理因为JDK需要接口才能产生代理对象,所以先创建一个接口package service;public inte..原创 2021-12-07 21:46:59 · 802 阅读 · 0 评论
分享