MyBaits第一天

Mybaits-plus2升级3实战 Mybaits-plus2升级3实战 2.0到3.0主要升级的点: 1.升级 JDK 8 + 优化性能 Wrapper 支持 lambda 语法 2.模块化 MP 合理的分配各个包结构 3.重构注入方法,支持任意方法精简注入模式 4.全局配置下划线转换消灭注入 AS 语句 5.改造 Wrapper 更改为 QueryWrapper UpdateWrapper 6.重构 分页插件 消灭固定分页模型,支持 Mapper 直接返回 IPage 接口 7.新增 Rest Api 通过 Controller 层 8. 阅读详情

Spring AOP原理

Spring AOP 采用动态代理技术实现。(AutoProxy)

如果Spring中的组件启用aop配置,容器返回的对象是一个原有组件的子类对象,子类对象方法将父类方法全部重写,在重写方法中调用切面组件功能和原有组件功能。

img

Spring采用的动态代理技术有两类。

  • cglib工具包

    默认目标组件没有接口采用。原理采用继承方式生成子类。

    public class Xxxx extends EvaluationControlller{
    
        //重写父类方法
        public Object xxx(){
            //调用切面组件功能
            //调用原有组件功能super.xxx();
        }
    
    }
    
  • JDK Proxy API

    默认目标组件有接口采用。原理采用接口实现方式生成代理类。

    public class Xxxx implements EvaluationDao{
        //实现接口方法
        public Object findById(){
            //调用切面组件功能
            //调用原有组件功能
        }
    }
    
  • 强制采用CGLIB方式

    <aop:aspectj-autoproxy proxy-target-class=“true”/>

    追加proxy-target-class="true"属性。

MyBatis

简介

MyBatis是一个数据库访问框架,用于简化数据库操作代码。

MyBatis前身是iBATIS框架。

  1. MyBatis封装功能有以下几点:

    • 封装了获取连接、获取statement、设置参数、执行sql、释放连接一系列过程
    • 封装了将ResultSet查询结果映射成实体对象过程
    • 封装了将SQL语句使用XML定义
    • 封装了将多表查询结果映射成实体对象过程
    • 封装了一些延迟加载和缓存特性

    不足:分页封装效率低下,需要使用pageHelper组件优化。

结构

img

基本使用

  1. 搭建Mybatis环境

    • 导入mybatis和驱动jar包
    • 引入sqlmap-config.xml配置文件
  2. 编写实体类(属性名和字段名保持一致)

  3. 定义SQL语句

    < select id="" parameterType="" resultType="">

    < insert id="" parameterType="">

  4. 获取SqlSession对象执行SQL

    • selectList
    • selectOne
    • insert
    • update
    • delete

扩展应用

  1. 打开底层日志输出

    在sqlmap-config.xml主配置文件中定义下面参数

    <!-- 控制打印底层执行过程 -->
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>
    
  2. 类型别名

    定义SQL语句时,parameterType和resultType可以使用类型别名。

    MyBatis框架内部定义了一批别名,开发者也可以自定义。

    • 内部预定的别名

      img

    • 开发自定义别名

      在sqlmap-config.xml中追加别名定义

      <typeAliases>
          <typeAlias type="cn.xdl.entity.Evaluation" alias="evaluation"/>
      </typeAliases>
      

      在SQL定义中,parameterType和resultType就可以使用alias名字。

  3. java.sql.SQLException: 无效的列类型: 1111

    原因:SQL中#{xx}取值为null时,就会产生上述异常。

    如果允许null值做参数,需要在#{}标识中执行jdbcType属性,属性值如下:

    img

    例如:#{user_id,jdbcType=NUMERIC}、#{title,jdbcType=VARCHAR}等

  4. ${}和#{}区别

    • #{}采用预编译SQL执行;${}采用Statement非预编译执行
    • #{}安全、${}容易被注入式攻击
    • 能使用#{}就不要用${}
    • 表名或字段名变化值就需要采用${}
    • 如果是一个参数值,用${_parameter}获取
  5. Mapper映射器

    Mapper映射器是按一定规则编写出的接口,Mybatis可以根据映射器接口自动创建出对象,然后对SQL进行操作。

    映射器规则如下:

    • 接口方法名与SQL定义的id属性一致
    • 接口参数类型与SQL定义的parameterType属性保持一致
    • 接口返回类型,多行查询用List、单行查询用resultType属性类型、增删改用void或int
    • SQL定义文件元素的namespace属性需要指定为“包名.映射器接口名”
    • 使用sqlSession.getMapper(映射器接口.class);获取映射器对象,然后利用方法调用SQL操作
2025机械考研复试面试问题汇总篇(含13门科目),考研机械复试专业面试常见重点问题总结!考研机械复试专业面试准备看这一篇就够了! (完整版内容:)1.汇集了本科各科的重点知识及多个机械名校800多个常见问题,共8.7万字185页,涵盖机械所以专业课的重点知识和常见问答。 2.涉及机械大类重点科目,包括:材料力学、控制工程、数控技术、机械制造技术基础、理论力学、液压传动、机械设计、机械原理、工程材料、互换性与技术测量、测试技术、汽车理论、程序设计与C语言等13门必修课。 阅读详情

相关推荐

Qt 5.9.1 32位下,手把手搞定周立功CAN二次开发库的加载与配置(含常见错误排查)

本文详细介绍了在Qt 5.9.1 32位环境下配置周立功CAN二次开发库的完整流程,包括环境准备、项目配置、常见错误排查及性能优化建议。特别针对MinGW 32bit环境,提供了.pro文件的精准配置和DLL部署策略,帮助开发者快速解决库文件匹配、编译报错和运行时问题,实现高效的CAN总线通信开发。

weixin_28717431的博客 356

解决mybatis映射对象中null值赋默认值的问题

mybatis映射对null值的处理

qq_38487508的博客 2254

【Collibra 驱动 IPD 数据血缘治理】:三层图谱分层展示体系与全链路追踪的技术业务实践

(应用级/数据级/字段级)是理解复杂数据流动的核心手段。其价值不仅体现在可视化的直观性,更在于通过。技术保障血缘不可篡改性,进一步提升IPD数据治理的可靠性。,解决了跨层级血缘分析的性能与可用性矛盾。数据血缘图谱要素定义(字节跳动/腾讯云/信安标委)实现对IPD数据的精准追踪,而数据血缘图谱的。分层交互设计标准(智慧城市数据中台规范)Collibra技术文档(2024)字段级血缘的挑战与解决路径。自动优化血缘路径,并深化。字段级血缘技术实现方案。Collibra通过。图数据库性能优化原理。

百态·数智思维 | 聚焦大数据、量化与未来AI 1244

mysql+mybatis对为null的值赋默认值(ifnull)

查询两张表 并且对为空的值做默认值 select u.User_pictureUrl, u.User_phone,u.ID as userId, u.user_nickname, IFNULL(f.userFriend_status,3)as status , IFNULL(f.userFriend_comment,' ')as userFriend...

c851204293的博客 1万+

在 Linux 虚拟机中手动安装 VMware Tools

对于 Linux 虚拟机,您可以从命令行手动安装 VMware Tools。对于 Linux 的较高发行版,请使用集成的 open-vm-tools 版本。 前提条件 有关 open-vm-tools 的操作系统兼容性的详细信息,请参见《VMware 兼容性指南》,网址为VMware Compatibility Guide - System Search。 开启虚拟机。 确认客户机操作系统正在运行。 因为 VMware Tools 安装程序是使用 Perl 编写的,请确认已在客户机操作系统中安..

m0_62526815的博客 1757

Ansys Zemax|无焦系统设计中的角度单位优化技巧

本文详细介绍了在Ansys Zemax OpticStudio中进行无焦系统设计的核心技巧。重点阐述了从聚焦思维到角度思维的转换,并演示了如何通过开启‘无焦像空间’模式、构建以波前和光束尺寸为目标的评价函数来优化激光扩束镜等系统。文章还分享了使用IMSF操作数处理混合系统以及常见误区避坑的实用指南,旨在帮助光学设计者高效完成无焦系统的设计与分析。

weixin_29231027的博客 362

Java与表之间的翻译官:MyBatis TypeHandler的工作链路、六类自定义转换实测与避坑解析

本文围绕MyBatis TypeHandler,梳理它在执行链路中的两次出场、BaseTypeHandler模板、注册表映射与选择顺序。基于MyBatis 3.5.14与MySQL 5.7实测六类转换:3.5.0起模板类不再判wasNull,空值被读成CREATED;枚举按序号存储演进后错位;逗号拼接拆坏元素;泛型擦除让List处理器互相覆盖;JSON处理器丢失元素类型;一个处理器写两个问号静默丢值;getByName触发DNS查询。最后给出作用域、线程安全、测试排查、版本差异与选型决策图。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 86万+

【AI大模型应用开发】【LlamaIndex教程】2. 存储模块:如何在 LlamaIndex 中使用自定义的向量数据库?(附代码)

前面文章两行代码就实现了文档的切分和向量化存储以及持久化存储。如果我们想用自定义的向量化数据库呢?

同学小张的博客 2119

springboot项目中,使用mybatis插件给指定字段注入默认值

在springboot项目中如何使用mybatis的插件自动注入创建人、更新人等信息。

栉风的博客 5829

制作INCA和CANape通用的A2L

CANape和INCA通用的A2L配置与修改

赞的博客 5966

YOLOv11改进 ,YOLOv11改进主干网络为MobileNetV3,助力涨点

MobileNetV3通过结合硬件感知网络架构搜索(NAS)和NetAdapt算法,通过新颖的架构改进进一步提升了性能。本文开始探讨了自动化搜索算法与网络设计如何协同工作,以利用互补方法来提升整体技术水平。通过这一过程,创建了两个新的MobileNet模型:MobileNetV3-Large和MobileNetV3-Small,分别针对高资源和低资源使用场景。这些模型随后被适配并应用于目标检测和语义分割任务。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1937

Mybatis动态 sql用法

其实很好理解,打个比方,我们要实现一个搜索的功能,但是这个要搜索的种类很多,并且种类里面有很多小的选项,我们要实现它的搜索,就要在接口里写很多的方法来对应用户选择的搜索条件,在这种情况下,就会需要用到我们的动态sql,它会根据不同的条件来拼接我们的sql语句,来实现用户的搜索。映射器配置文件来实现动态sql基本就这么多内容,还是比较好理解的,就和我们字符串的拼接接一样,把他们组成新的sql语句,还有一种注解的方式来完成dongtaisql,有兴趣的可以了解一下,和我们用配置文件实现大同小异。...

WAX_1197975711的博客 1544

Android 12.0 系统systemui状态栏下拉左滑显示通知栏右滑显示控制中心模块的流程分析

在android12.0的系统rom定制化开发中,在系统原生systemui进行自定义下拉状态栏布局的定制的时候,需要在systemui下拉状态栏下滑的时候,根据下滑坐标来 判断当前是滑出通知栏还是滑出控制中心模块,所以就需要根据屏幕宽度,来区分x坐标值为多少是左滑出通知栏或者右滑出控制中心模块,接下来分析下 状态栏下滑坐标等相关功能代码分析

安卓兼职framework和app工程师的博客 2768

第一天学习mybaits

mybatis入门

温柔有多温柔。 331

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

mybaits第一天学习笔记

三层架构 框架 使用JDBC的缺陷 mybatis框架

qq_44160357的博客 260

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

MYBAITS的核心处理层

配置文件主要有两个,一个是mybaits-config.xml配置文件和映射配置文件MYBAITS处理config文件以及映射配置文件时,会在内存中创建相应的配置对象,该过程的设计使用到建造者模式。关于建造者模式,指的是将一个复杂对象的构建过程,与他的表示分离,从而使得同样的构造过程可以创建不同的表示,建造这模式将一个复杂对象的 创建过程分成了一步步简单的步骤,用户只需要了解复杂对象的类型和内容,...

闪的博客 354

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

mybaits

MyBaits框架一、Mybaits是什么?二、为什么使用三、mybaits的crud四、细节4.1 获取主键4.2 log4j日志4.3 mybaits别名4.4 #和$的区别五、批量操作数据六、动态sql 持久层框架 Apache 的开源项目 ORM 对象关系映射 持久化 把数据保存到硬盘中 一、Mybaits是什么? 一个支撑框架 以映射sql语句ORM方式来做数据库持久化操作 二、...

白马太黑的博客 760

Mybaits配置文件

文章目录Mybaits配置文件配置文件目录截图 Mybaits配置文件 配置文件目录截图

qq_32640013的博客 482

Mybaits配置文件属性settings

文章目录Mybaits配置文件属性settings Mybaits配置文件属性settings settings 属性的设置会改变mybaits运行方式;比如开启各种开关,等等。

qq_32640013的博客 264

Mybaits映射文件配置之多参数获取

文章目录Mybaits映射文件配置之多参数获取测试一下 Mybaits映射文件配置之多参数获取 ​ 如果传入的参数有多个,直接通过参数名是无法获取的,因为mybaits没有进行自动绑定。如果只有一个参数,#{xxx}获取,里面填写任何单词都可以。多参数情况下,参数的默认名为:#{arg0},#{arg1} 或者 #{param1},#{param2} 两者是等价的。 测试一下 sql语句 <...

qq_32640013的博客 231

MyBaits基本要素

MyBaits的基本要素-------核心配置文件 1.mybatis-config.xml文件结构 该配置文件的元素节点是有先后顺序的 层次图如下 configuration(配置,最大的节点) properties(可以配置在java属性配置文件当中) settings (修改MyBatis在运行时的行为方式) typeAliases 为Java类型命名一...

anhandun3691的博客 152

Mybaits

1. 先在pom.xml中导包 <!--mybatis依赖包--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.0</versi

weixin_43762083的博客 1341

mybaits下载

mybaits的代码由github.com管理 下载地址:https://github.com/mybatis/mybatis-3/releases

Heislikeadog的博客 169

集成MyBaits

1. 使用SpringBoot的starter引入相关的依赖 版本最好对应SpringBoot的版本 <!-- MyBaits --> <dependency> <groupId>org.mybatis.spring.boot</groupId> &lt...

Tinuv的博客 216

mybaits 教程

一 mybiats  配置

沉在水底的鱼的博客 361

IDEA中使用MyBaits的配置问题

1,resource文件 可以创建一个resource包,标为resource,这样src中的代码可以直接应用resource包内的文件。对于UserMapper.xml这样的配置文件,不适合放在resource包内,可以直接放在src包内,但是需要注意 安装了MyBaits Plugin这个插件后,xml和接口对应的方法应该放在同一个文件夹下,这样插件对自动绑定,方便跳转。 2,databa

weixin_39107448的博客 678
上一篇: 使用Spring框架+前端技术实现简易的留言系统
下一篇: Redis有序集合
biuaxia
博客等级 码龄10年 7粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值