【MyBatis操作数据库】XML配置

配置连接字符串和MyBatis

注意,这行代码代表着xml必须在mapper文件夹的下面(路径必须保持一致)

配置完文件后,需要写持久层代码

添加 mapper 接⼝:

添加 UserInfoXMLMapper这样的xml文件:

单元测试:

以下是对以上标签的说明:

<mapper> 标签:需要指定 namespace 属性,表⽰命名空间,值为 mapper 接⼝的全限定名,包括全包名.类名。

<select> 查询标签:是⽤来执⾏数据库的查询操作的:

id :是和mapper接⼝中定义的⽅法名称⼀样的,表⽰对接⼝的具体实现⽅法,id和 mapper 接⼝中定义的⽅法必须一样

resultType :是返回的数据类型,也就是开头我们定义的实体类

【xml实现的步骤】

1.引入依赖

2.完善配置(数据库配置,mapper xml配置)

3.定义接口

4.写xml实现

5.测试

【注意】

日志中右箭头代表我们输给mybatis的数据

左箭头代表mybatis返回给我们的数据

【增(Insert)】

此外,如果使用**@Param**注解来传参,则必须利用对象引用去绑定参数关系

删(Delete)

改(Update)

查(Select)

【方式1:取别名】

【方式2:映射】

【方式3:配置文件】

【#{} 和 ${}区别】【重点】

#{} 和 ${} 的区别就是预编译SQL和即时SQL 的区别

1. 更安全(防⽌SQL注⼊) 【重点】

$存在SQL注入的问题

SQL注⼊:是通过操作输⼊的数据来修改事先定义好的SQL语句,以达到执⾏代码对服务器进⾏攻击的

由于没有对⽤⼾输⼊进⾏充分检查,⽽SQL⼜是拼接⽽成,在⽤⼾输⼊参数时,在参数中添加⼀些 SQL关键字,达到改变SQL运⾏结果的⽬的,也可以完成恶意攻击

2.SQL类型不同

#使用的是占位方式,属于预编译SQL

$使用的是直接替换方式,属于即时SQL

区别是,预编译SQL的性能要比即时SQL更高

3.排序只能使用$

⼀些场景, #{} 不能完成, ⽐如 排序功能, 表名, 字段名作为参数时, 这些情况需要使⽤${}

这是因为#{} 会根据参数类型判断是否拼接引号,如果参数类型为String, 就会加上 引号,如果不想加上引号,就要使用${}

//模糊查询虽然${}可以完成, 但因为存在SQL注⼊的问题,所以通常使⽤mysql内置函数concat来完成

相关推荐
涵涵(互关)2 小时前
Maven多模块项目MyMetaObjectHandler自动填充日期未生效
spring·maven·mybatis
安当加密2 小时前
MySQL数据库透明加密(TDE)解决方案:基于国密SM4的合规与性能优化实践
数据库·mysql·性能优化
JH30732 小时前
第七篇:Buffer Pool 与 InnoDB 其他组件的协作
java·数据库·mysql·oracle
板凳坐着晒太阳2 小时前
ClickHouse 配置优化与问题解决
数据库·clickhouse
数据库生产实战2 小时前
解析Oracle 19C中并行INSERT SELECT的工作原理
数据库·oracle
AAA修煤气灶刘哥3 小时前
服务器指标多到“洪水泛滥”?试试InfluxDB?
数据库·后端·面试
阿沁QWQ4 小时前
MySQL服务器配置与管理
服务器·数据库·mysql
程序新视界5 小时前
MySQL“索引失效”的隐形杀手:隐式类型转换,你了解多少?
数据库·mysql·dba
Logintern095 小时前
windows如何设置mongodb的副本集
数据库·windows·mongodb
RestCloud7 小时前
在制造业数字化转型浪潮中,数据已成为核心生产要素。然而,系统割裂、数据滞后、开发运维成本高等问题,却像顽固的 “数据枷锁”,阻碍着企业发展。ETLCloud与
数据库·postgresql