1 SSM框架说明
Spring Boot:
脚手架,用来快速搭建项目环境(不属于SSM)
Spring Framework:
家族核心:用于bean对象创建和管理
Spring MVC子模块:
用于快速开发Web应用程序(是Framework中的子模块)
MyBatis框架:
第三方框架,主要用于数据库的管理(不属于Spring家族),是基于java的持久层框架,用于和数据库映射,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集的工作;
通过注解方式或者xml配置文件的方式来配置SQL和映射关系,灵活性非常高
Spring可以将MyBatis框架整合进去
2 MyBatis框架
Mybatis是一个优秀的持久层框架,底层基于JDBC实现从数据库的交互
只需要通过注解或修改XML配置文件配置好需要执行的SQL语句,框架会根据SQL语句生成对应的JDBC代码并对数据库中数据进行增删改查操作。
3 使用步骤
1、创建工程
2、选择SpringBoot版本:2.7.12
3、依赖项:MySQL Driver、MyBatis Framework
4、配置文件中添加链接数据库信息
spring.datasource.url = jdbc : mysql : //localhost : 3306/blog?serverTimezone = Asia/Shanghai&characterEncoding = utf8spring.datasource.username = rootspring.datasource.password = root
4 整合MyBatis完成用户数据操作
@Mapper注解
是由MyBatis框架提供,用于描述数据层接口,告诉系统底层为此接口创建其实现类,在实现类中定义数据访问逻辑,执行与数据库的会话(交互)
@Insert注解(增删改查都有)
使MyBatis框架根据接口方法的参数类型自动生成插入数据的代码
insert、update、dalete返回值为受影响的数据条数int
占位符#{}
是MyBatis框架中用来表示占位符的语法
在@Insert注解中,#{}所嗲表的是一个占位符,它可以接受java对象作为输入参数,并将其转换为预编译的SQL语句中的参数。使用#{}可以帮助我们避免SQL注入等问题,同时也让SQL写起来更加简单
5 MyBatis框架-xml管理
5.1定义
XML是一种可扩展型语言,用户可以自己定义标签,用来描述特定类型的数据;
XML语法严格,每个标签都必须有一个结束标签,标签的嵌套关系也必须合法
5.2和SQL注解比较
XML配置SQL,可以将SQL语句和JAVA代码分离开
XML配置SQL,支持动态SQL语句
XML配置SQL,支持SQL语句的复用
5.3使用流程
1、在resources目录下创建目录,用来存放xml配置文件
2、在文档服务中配置映射文件(文档服务器有模版)
3. application.properties中添加配置:mybatis框架映射配置文件的位置
# 设置 MyBatis 框架的映射( Mapper )配置文件的位置mybatis.mapper-locations = classpath : mappers/*.xml
5.4xml配置SQL标签
在Mybatis的XML文件中,SQL语句都是使用SQL标签来定义的
5.5常用的SQL标签
5.6定义映射文件
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- 1. 填写 namespace ,填写 WeiboMapper 的绝对路径 --><mapper namespace = "cn.tedu._04mybatis.mapper.WeiboMapper" ><!-- 在微博表中插入数据 --><insert id = "insert" >INSERT INTO weiboVALUES (NULL, #{content}, #{created}, #{userId})</insert><!-- 根据微博 id 查询数据--> resultType是指查询结果映射到的java类<select id = "selectByWeiboId" resultType = "cn.tedu._04mybatis.pojo.Weibo" >SELECT *FROM weiboWHERE id = #{id}</select>
5.7动态SQL语句
动态SQL是指在程序运行时动态生成SQL语句的技术,它允许开发人员在程序运行时根据不同的条件拼接SQL语句,从而灵活的构建各种查询
DELETE FROM comment WHERE id in(2,3,5) 此处id的值不确定,数量也不确定!
在接口中定义方法
/**1. 第一种批量删除 : 传递 Integer 的数组 */int deleteByIds1 ( Integer [] ids );/**2. 第二种批量删除:传递集合参数 */int deleteByIds3 ( List < Integer > ids );
定义映射文件
<!-- 批量删除 - 数组格式:collection 用来设置遍历对象的类型,item 设置遍历出每一个变量的名称separator 设置分隔符注意:注释一定要放在 delete 标签的外面,不能放在里面,放在里面会被当做 sql 语句执行!--><delete id = "deleteByIds1" >DELETE FROM comment WHERE id IN(<foreach collection = "array" item = "id" separator = "," >#{id}</foreach>)</delete><!-- 集合传参,需要把 collection 改为 list --><delete id = "deleteByIds2" >DELETE FROM comment WHERE id IN(<foreach collection = "list" item = "id" separator = "," >#{id}</foreach>)</delete>