MyBatis使用详解

一、xml映射文件

1、 xml文件中如果配置了namespace,那么id可以重复;如果没有配置namespace,那么id就不能重复
原因:
a、namespace+id是作为Map<String,MapperStatement>的key使用,如果没有namespace,那么剩下id,如果id重复就会导致数据互相覆盖。有了namespace,id就不会重复

MyBatis分页插件实现

使用RowBounds对象进行分页,它针对ResultSet结果集执行的内存分页,而非物理分页,可以直接在sql内直接书写,带有物理参数来完成分页,也可以使用分页插件来完成物理分页
分页插件的基本原理是使用Mybatis提供的插件接口,实现自定义插件,在插件的拦截方法内拦截待执行的sql,然后重写sql,根据dialect方言,添加对应的物理分页语句和物理分页参数

MyBatis原理

原理图如下
在这里插入图片描述

Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式?

第一种是使用 标签,逐一定义列名和对象属性名之间的映射关系。
第二种是使用sql列的别名功能,将列别名书写为对象属性名,比如T_NAME AS NAME,对象属性名一般是name,小写,但是列名不区分大小写,Mybatis会忽略列名大小写,智能找到与之对应对象属性名,你甚至可以写成T_NAME AS NaMe,Mybatis一样可以正常工作。

#{}和${}的区别

#{}是占位符,预编译处理;KaTeX parse error: Expected 'EOF', got '#' at position 32: …编译处理。Mybatis在处理#̲{}时,#{}传入参数是以字符…{} 不能防止SQL 注入
#{} 的变量替换是在DBMS 中;${} 的变量替换是在 DBMS 外

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值