SSM框架笔记

BeginTime: 2022-12-28 00:35:29
【尚硅谷】SSM 框架全套教程,MyBatis+Spring+SpringMVC+SSM 整合一套通关
参考资料:ssm md 格式笔记
半夜学习的我像个小丑 🃏

P1 课程介绍

P2 MyBatis 历史

MyBatis 最初是 Apache 的一个开源项目iBatis, 2010 年 6 月这个项目由 Apache Software Foundation 迁移到了 Google Code。随着开发团队转投 Google Code 旗下, iBatis3.x 正式更名为 MyBatis。代码于 2013 年 11 月迁移到 Github。

iBatis 一词来源于“internet”和“abatis”的组合,是一个基于 Java 的持久层框架。 iBatis 提供的持久层框架包括 SQL Maps 和 Data Access Objects(DAO)。

持久层框架,封装 JDBC

P3 MyBatis 特性

  1. MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架
  2. MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集
  3. MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJO(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录
  4. MyBatis 是一个 半自动的 ORM(Object Relation Mapping)框架

P4 MyBatis 下载

MyBatis 下载地址

P5 MyBatis 和其它持久化层技术对比

  • JDBC
    • SQL 夹杂在 Java 代码中耦合度高,导致硬编码内伤
    • 维护不易且实际开发需求中 SQL 有变化,频繁修改的情况多见
    • 代码冗长,开发效率低
  • Hibernate 和 JPA
    • 操作简便,开发效率高
    • 程序中的长难复杂 SQL 需要绕过框架
    • 内部自动生产的 SQL,不容易做特殊优化
    • 基于全映射的全自动框架,大量字段的 POJO 进行部分映射时比较困难。
    • 反射操作太多,导致数据库性能下降
  • MyBatis
    • 轻量级,性能出色
    • SQL 和 Java 编码分开,功能边界清晰。Java 代码专注业务、SQL 语句专注数据
    • 开发效率稍逊于 HIbernate,但是完全能够接受

P6 开发环境和准备工作

开发环境

  • IDE:idea 2019.2
    (我只有最新版)
  • 构建工具:maven 3.5.4
    (这东西是干什么的?)
  • MySQL 版本:MySQL 8
    (腾讯云 docker 镜像部署一个)
  • MyBatis 版本:MyBatis 3.5.7
    (已经下载)

MySQL 不同版本的注意事项


1、驱动类 driver-class-name
MySQL 5 版本使用 jdbc5 驱动,驱动类使用:com.mysql.jdbc.Driver
MySQL 8 版本使用 jdbc8 驱动,驱动类使用:com.mysql.cj.jdbc.Driver

2、连接地址 url
MySQL 5 版本的 url:jdbc:mysql://localhost:3306/ssm
MySQL 8 版本的 url:
jdbc:mysql://localhost:3306/ssm?serverTimezone=UTC
否则运行测试用例报告时区错误

创建 maven 工程
打包方式:jar
引入依赖

<dependencies>
   <!-- Mybatis核心 -->
   <dependency>
       <groupId>org.mybatis</groupId>
       <artifactId>mybatis</artifactId>
       <version>3.5.7</version>
   </dependency>

<!-- junit测试 -->
   <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <version>4.12</version>
       <scope>test</scope>
   </dependency>

<!-- MySQL驱动 -->
   <dependency>
       <groupId>mysql</groupId>
       <artifactId>mysql-connector-java</artifactId>
       <version>8.0.16</version>
   </dependency>
</dependencies>

P7 创建 MyBatis 的核心配置文件

习惯上命名为 mybatis-config.xml,这个文件名仅仅只是建议,并非强制要求。将来整合 Spring,之后,这个配置文件可以省略,所以大家操作时可以直接复制、粘贴。
核心配置文件主要用于 配置连接数据库的环境 以及 MyBatis 的全局配置信息
核心配置文件存放的位置是 src/main/resources 目录下

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

	<!--设置连接数据库的环境-->
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC"/>
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
				<property name="url" value="jdbc:mysql://localhost:3306/ssm?serverTimezone=UTC"/>
				<property name="username" value="root"/>
				<property name="password" value="123456"/>
			</dataSource>
		</environment>
	</environments>
<!--引入映射文件-->
<mappers>
	<package name="mappers/UserMapper.xml"/>
</mappers>
</configuration>

P8 创建 mapper 接口

MyBatis 中的 mapper 接口相当于以前的 dao。但是区别在于 mapper 仅仅是接口,我们不需要提供实现类。

public interface UserMapper {

    /**
    * 添加用户信息
    */
    int insertUser();
}

创建 MyBatis 的映射文件

相关概念:ORMObject Relationship Mapping)对象关系映射。

  • 对象:Java 的实体类对象
  • 关系:关系型数据库
  • 映射:二者之间的对应关系
Java 概念 数据库概念
属性 字段/列
对象 记录/行

1. 映射文件的命名规则:

  • 表所对应的实体类的类名+Mapper.xml
    例如:表 t_user,映射的实体类为 User,所对应的映射文件为 UserMapper.xml,因此一个映射文件对应一个实体类,对应一张表的操作
  • MyBatis 映射文件用于编写 SQL,访问以及操作表中的数据
  • MyBatis 映射文件存放的位置是 src/main/resources/mappers 目录下

2. MyBatis 中可以面向接口操作数据,要保证两个一致

  • mapper 接口的全类名和映射文件的命名空间(namespace)保持一致
  • mapper 接口中方法的方法名和映射文件中编写 SQL 的标签的 id 属性保持一致
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
		"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.atguigu.mybatis.mapper.UserMapper">
	<!--int insertUser();-->
	<nsert id="insertUser">
		<insert into t_user values(null,'admin','123456',23,'男','12345@qq.com')
	</insert>
</mapper>
posted @ 2022-12-28 00:41  悠悠江水  阅读(150)  评论(0)    收藏  举报