【MyBatis】初学MyBatis

目录

  • MyBatis 是什么?
  • MyBatis框架搭建
    • 1.添加MyBatis框架
    • 2.设置MyBatis配置
      • 数据库的相关链接信息
      • xml 保存路径和命名格式
  • 根据MyBatis写法完成数据库的操作
  • MyBatis插件
  • MyBatis传递参数查询
    • ${} 和 #{} 有什么区别?
    • SQL注入问题
  • MyBatis like查询
  • MyBatis多表查询
  • MyBatis删除操作
  • MyBatis修改操作
  • MyBatis添加操作

MyBatis 是什么?

MyBatis 是⼀款优秀的持久层框架,它⽀持⾃定义 SQL、存储过程以及⾼级映射。MyBatis 去除了⼏乎所有的 JDBC 代码以及设置参数和获取结果集的⼯作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接⼝和 Java POJO(Plain Old Java Objects,普通⽼式 Java 对象)为数据库中的记录。

MyBatis ORM(对象关系映射框架) 实现更加简单的操作数据库的框架。它的底层是基于JDBC。

MyBatis框架搭建

1.添加MyBatis框架

【MyBatis】初学MyBatis_第1张图片

2.设置MyBatis配置

数据库的相关链接信息

# 设置数据库的相关链接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mycnblog2023?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

xml 保存路径和命名格式

# 设置MyBatis XML 存放路径和命名格式
mybatis.mapper-locations=classpath:mybatis/*Mapper.xml
# 配置MyBatis 执行时执行打印SQL
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
logging.level.com.example.demo=debug

根据MyBatis写法完成数据库的操作

常规的写法:包含两个文件:
1.接口:方法的声明(给其他层(Service)调用)
2.XML:实现接口

1.定义接口
【MyBatis】初学MyBatis_第2张图片
2.使用XML实现接口
【MyBatis】初学MyBatis_第3张图片

MyBatis插件

为了方便开发MyBatis,实现XML和对应的接口之间的快速跳转,可以安装一个MyBatisX的插件
【MyBatis】初学MyBatis_第4张图片
【MyBatis】初学MyBatis_第5张图片

MyBatis传递参数查询

在这里插入图片描述

类中的属性和数据库表中的字段名不一致时,那么查询结果为null,解决方案:
1.将类中的属性和表中的字段名保持一致(最简单的解决方案)。
2.使用SQL语句中的as进行列名(字段名)重命名,让列名(字段名)等于属性名。

在这里插入图片描述

3.定义一个resultMap,将属性名和字段名进行手动映射。

【MyBatis】初学MyBatis_第6张图片

及时执行:
在这里插入图片描述
在这里插入图片描述
**预执行:**它的执行是安全的可以防止SQL注入。
在这里插入图片描述
在这里插入图片描述

${} 和 #{} 有什么区别?

  1. ${} 直接替换;#{} 预执行。
  2. ${} 是不安全,存在SQL注入;#{} 是安全的,不存在SQL注入。

SQL注入问题

【MyBatis】初学MyBatis_第7张图片
从上面的示例可以看出${}可以实现的
功能#{}都能实现,并且 ${}还存在SQL注入问题,那为什么 ${}的写法还存在?

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

${}适用场景:当业务需要传递SQL命令时,只能使用 ${},不能使用#{}
${}注意事项:如果要使用 ${},那么传递的参数一定要能被穷举,否则不能使用。

MyBatis like查询

在这里插入图片描述

like 使⽤ #{} 报错
在这里插入图片描述
在这里插入图片描述
相当于: select * from userinfo where username like ‘%‘username’%’;

【MyBatis】初学MyBatis_第8张图片
【MyBatis】初学MyBatis_第9张图片

MyBatis多表查询

MyBatis注解方式实现多表查询
【MyBatis】初学MyBatis_第10张图片

MyBatis删除操作

在这里插入图片描述
在这里插入图片描述
【MyBatis】初学MyBatis_第11张图片
【MyBatis】初学MyBatis_第12张图片

MyBatis修改操作

在这里插入图片描述

在这里插入图片描述
【MyBatis】初学MyBatis_第13张图片
【MyBatis】初学MyBatis_第14张图片

MyBatis添加操作

MyBatis添加,返回受影响的行数
在这里插入图片描述
【MyBatis】初学MyBatis_第15张图片
【MyBatis】初学MyBatis_第16张图片
【MyBatis】初学MyBatis_第17张图片
MyBatis添加,返回自增ID
在这里插入图片描述
【MyBatis】初学MyBatis_第18张图片
【MyBatis】初学MyBatis_第19张图片

你可能感兴趣的:(JavaEE,mybatis)