第一个MyBatis程序

目录

一、新建项目 

二、设置数据库和MyBatis的配置 

🍑配置数据库的连接信息

🍑配置MyBatis XML存放位置和命名规则

三、MyBatis实现查询操作

🍎MyBatis的组成

🍎使用MyBatis实现查询功能 

🍎SpringBoot单元测试查询是否成功

1、借助IDEA生成对应的测试文件 

2、设置当前的测试环境为Spring Boot,并且注入要测试的类——进行验证 

碎碎念🔔🔔🔔🔔

四、MyBatis实现增删改查

🍑查询指定Id的数据记录

 🍑新增操作

🍑删除操作

🍑 修改操作

🔔通过url请求操作数据库


一、新建项目 

首先我们打开IDEA,新建一个SpringMVC项目。

 项目创建后,接下来和我们之前对springmvc项目的操作是一样的。

 如下图所示:

为啥会报错呢?

当然报错呀!你得告诉程序要连哪个数据库吧?

二、设置数据库和MyBatis的配置 

🍑配置数据库的连接信息

这里的很多内容是固定的

# 数据库连接配置
Spring:
  datasource:
    url: jdbc:mysql://localhost:3306/你要连接的数据库名?characterEncoding=utf8&useSSL=false
    username: 用户名
    password: 自己的密码
    driver-class-name: com.mysql.cj.jdbc.Driver #只要你数据库用的是mysql这个是固定的

🍑配置MyBatis XML存放位置和命名规则

# 配置 mybatis xml 的⽂件路径,在 resources/mapper 创建所有表的 xml ⽂件
mybatis:
  mapper-locations: classpath:mapper/**Mapper.xml 
#注意这里的mapper名字是可以你自己进行设定的,但一定要和你的项目路径对应起来

三、MyBatis实现查询操作

在用MyBatis进行增删改查之前,首先我们要明白MyBatis的组成,MyBatis执行流程——怎样写程序才符合MyBatis的要求。

🍎MyBatis的组成

先来回顾一下我们软件的分层

首先我们要明白

 MyBatis 的 操作模式,包含两个部分:

  1. Interface(方法定义)
  2. xxx.xml

注意!这里是接口,不是类。
这个interface 中 会加一个注解,它是来自于mybatis里面的注解 Mapper。

加了这个注解之后,表示我们当前的这个 mybatis 类 所的事情,就是 实现 对象的映射。
这个时候,帮我们的方法名字 定义到 interface 里面。
我们 interface 里面的方法,是不能有实现的,是一个抽象方法。

思考一下:
假设,我们要根据用户ID 去查询一个用户信息。
那我们定义一个方法名有什么用?又没有具体实现,怎么可能会实现查询功能??
答案显而易见是不行的!!!
'这个时候,我们就需要另一个东西:xml 文件
mybatis 有点奇怪,感觉就像是 “怕脑门” 想出来的方法 。
就是 要想操作数据库,必须得有两个文件。
第一个,它是Java中的 一个普通接口,在接口中,定义方法名称。
定义方法名称之后,就该实现方法了。
但是接口中方法不能有实体,需要映射到对应的 xml 文件中来帮他完成上述工作。
当然,在xml文件中,也需要表明它是那个方法的映射。
这就是第二个文件 xml。


根据我们前面讲的映射:就是 把业务代码 转换成 SQL 语句。
也就是说我们 定义在接口中的方法,是为了声明该方法 对数据 进行 何种操作。
具体的实现 已经通过某种映射关系,映射到 xml 文件中,
我们需要在 xml 文件中,编写 对应功能的 SQL 语句,就可以了。


有的人可能会疑问:
我们可不可以将 SQL 语句 写在代码中,就像 jdbc 编程 一样。
答案:可以,但是!SQL 只能是 String 类型的,如果SQL写错,它是不会报错的。
这就很容易翻车。
所以,mybatis 的设计师 思考一会,这样的话要不直接把 SQL 写在 xml 里面?
于是一拍大腿,就这么决定了。
在xml里面,只需要配置 我们要是实现的 interface 是谁,我要实现的 SQL 是谁。
OK ,这样一配置就完了。
这两个合在一起,最终生成 mybatis 中能执行的SQL。
通过这个SQL语句,去操作数据库。
将 操作数据库得到的结果,返回给 服务层。
服务层,再返回给 controller(控制层)。
控制层,再把结果交给用户。
这样 就完成了 一次交互。

所以,我们讲 mybatis 的 操作模式,就是在讲下图中的两个文件。
————————————————

小结: 

理论和思想了解完了,接下来就是实战了。

 

首先根据我们数据库的表,在我们的程序中创建想对应的实体类——我们的MyBatis是ORM框架,我们的程序对象与关系数据库数据之间有响应的映射关系

  • 一个数据库中的数据表对应我们程序中的一个实体类
  • 数据表中的一行数据对应该实体类的一个实例化对象
  • 该数据表中的各个属性对应该实体类的成员变量(属性)
     

 

🍎使用MyBatis实现查询功能 

好了,到现在为止,MyBatis基础的查询操作就算完成了。嘿嘿,其实MyBatis真正意义上的执行就两步:MyBatis接口、该接口所对应的xml文件。只是我们上面花了很多功夫来讲了MyBatis的规范,只要你按照MyBatis人家给的规范要求来操作数据库,其实还是很简单的。

那么查询操作既然写完了,我们怎么知道程序是否查询成功了呢?

🍎SpringBoot单元测试查询是否成功

这时,我们的Spring Boot 单元测试就有了用武之地。

单元测试(unit testing),是指对软件(项目)中的最⼩可测试单元进⾏检查和验证的过程就叫单元测试。

在我们当前项目中,最小的测试单元就是方法,所谓单元测试就是看要测试的方法是否返回了预期的值。

注意这里虽然也叫测试,但单元测试一般是我们开发人员进行的。测试人员一般进行的都是功能行测试,看产品经理提的某个需求是否实现,是一种集合测试。

1、借助IDEA生成对应的测试文件 

 然后我们要测试的代码所对应的单元测试代码就生成了

2、设置当前的测试环境为Spring Boot,并且注入要测试的类——进行验证 

 执行我们的测试代码。

碎碎念🔔🔔🔔🔔

一开始我在执行的时候,明明各项配置的都对,但一执行就显示:


 下面的报错信息显示:
Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)

然后吧,一直找错、一直改,忙活了大半天还是没有什么头绪。

直到不经意见给我们上面的密码的外层,加了一对半角双引号,结果还就真执行成功了。

无奈,好奇怪...

四、MyBatis实现增删改查

🍑查询指定Id的数据记录


 🍑新增操作


🍑删除操作

添加接口

添加该接口对应的xml实现


🍑 修改操作

添加接口

 添加接口对应的xml实现

🔔通过url请求操作数据库

回顾一下我们MyBatis的操作模式

详细流程如下 

  • 8
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MyBatis 中使用临时表的方式和在普通 SQL 语句中使用临时表的方式是一样的。 首先需要在 SQL 语句中创建临时表,然后再进行相关操作。下面以 MySQL 数据库为例,演示如何在 MyBatis 中使用临时表。 1. 创建临时表 在 MySQL 中,可以使用以下语句创建临时表: ```sql CREATE TEMPORARY TABLE temp_table ( id INT PRIMARY KEY, name VARCHAR(20) ); ``` 2. 在 MyBatis 中使用临时表 首先,在 MyBatis 的 Mapper 文件中定义 SQL 语句,并将创建临时表的 SQL 语句和相关操作的 SQL 语句写在一起,例如: ```xml <mapper namespace="com.example.mapper.TempTableMapper"> <select id="queryTempTable" resultType="java.util.Map"> <![CDATA[ CREATE TEMPORARY TABLE temp_table ( id INT PRIMARY KEY, name VARCHAR(20) ); INSERT INTO temp_table (id, name) VALUES (1, '张三'); INSERT INTO temp_table (id, name) VALUES (2, '李四'); SELECT * FROM temp_table; ]]> </select> </mapper> ``` 在上面的例子中,先创建了一个临时表 `temp_table`,然后插入了两条数据,最后查询了整个表。 3. 调用 Mapper 方法执行 SQL 语句 在 Java 代码中,调用 Mapper 方法执行 SQL 语句即可,例如: ```java public interface TempTableMapper { List<Map<String, Object>> queryTempTable(); } public class MyBatisTest { public static void main(String[] args) { SqlSession sqlSession = MyBatisUtil.getSqlSession(); TempTableMapper tempTableMapper = sqlSession.getMapper(TempTableMapper.class); List<Map<String, Object>> resultList = tempTableMapper.queryTempTable(); System.out.println(resultList); sqlSession.close(); } } ``` 最后,执行 Java 代码即可看到查询结果。需要注意的是,在 MyBatis 中创建的临时表只在当前的会话中存在,在会话关闭时会自动删除。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是小鱼儿哈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值