mybits相关知识点

文章详细介绍了Mybatis的入门步骤,包括使用Lombok简化实体类,通过JDBC建立数据库连接,理解数据库连接池的概念及切换。还深入讲解了Mybatis的注解方式操作,如删除、预编译、新增、更新和查询,以及动态SQL中的if和foreach标签的使用。同时提到了xml映射文件的基础配置和动态SQL控制,帮助读者掌握Mybatis的核心操作。
摘要由CSDN通过智能技术生成

入门

第一个程序

步骤

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意这里主方法是一个接口,上面要加一个Mapper注解,这样就可以系统生成一个实例化对象,并放入IOC池中,成为bean
在这里插入图片描述
通过依赖注入的方式,实例化接口,激活接口,之后在测试类中调用接口方法,得到返回值,并通过stream流遍历

配置sql,建立数据库连接

在这里插入图片描述

jdbc

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

数据库连接池

简介

在这里插入图片描述

连接池的切换

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

总结

在这里插入图片描述

lombok

在这里插入图片描述
用于简化实体类的代码量

效果:
在这里插入图片描述

Mybatis基础操作(注解)

准备工作

类型对应

在这里插入图片描述
类名与表名保持一致

删除

简介

在这里插入图片描述

具体代码

在这里插入图片描述
在mapper包下的接口中,定义一个方法,因为是在接口中,所以是抽象方法,没有方法体
之后在方法上面加一个注解,如果是删除,就加删除注解@Delect(“”)
引号里面写具体的sql语句
这里注意有一个变量定义方法:#{id},这里会把抽象方法的参数传入进来

在这里插入图片描述
之后去测试类当中,依赖注入,测试调用即可

预编译

简介

在这里插入图片描述
传递给数据库的是一个待填入数据的占位符,是一个问号

优点

优点1

在这里插入图片描述

优点2

更加安全

例子
sql注入,对于不是预编译的代码,会采用拼接的方式,这样就有bug,可以通过填入的数据更改代码逻辑,如下
在这里插入图片描述
在这里插入图片描述
经过数据拼接,数据逻辑被更改,所以不安全,而预编译就不会有这样的bug

预编译的实现

在这里插入图片描述
一般采用第一个

总结

在这里插入图片描述

新增

简介

在这里插入图片描述

具体代码

在这里插入图片描述
在接口中,当参数有多个时,可以用一个实体类进行封装,之后在注解的语句中,直接#{类的属性值}

而在测试类中,需要定义该类的对象,之后对该对象赋值,并调用接口的对应方法,如下图
(注意上方还有一个依赖注入,用来创建接口对象)
在这里插入图片描述

新增(主键返回)

在这里插入图片描述
用于添加完数据之后,返回一个主键

代码
在这里插入图片描述
这是接口中,在接口上方加入注解 true表示启用注解,id表示将主键封装到对象的id属性中

在这里插入图片描述
(注意上方还有一个依赖注入,用来创建接口对象)
之后在测试类中可以输出对象的id,也就是主键,

因为接口包是用来跟数据库联系的,所以接口中只能完成与数据库的联系操作,其他操作大部分放在册数类中进行
而,测试类中利用接口调用方法的操作,实际上可以理解为上传数据至数据库

更新

简介

在这里插入图片描述

具体代码

在这里插入图片描述
接口中与添加操作差不多,都是利用实体类进行编码

在这里插入图片描述
(注意上方还有一个依赖注入,用来创建接口对象)
测试类中,也是创建类的对象,利用对象赋值,这样数据就被封装进了对象里,再利用接口调用方法

查询(根据ID)

简介

在这里插入图片描述

具体代码

在这里插入图片描述
这是接口中的代码,直接创建一个方法,方法的返回值类型是一个实体类,参数是id值,意思为将查询到的数据封装到一个对象当中

在这里插入图片描述
(注意上方还有一个依赖注入,用来创建接口对象)

这是测试类,创建测试方法之后,调用接口方法返回一个对象,直接输出该对象。(之所以可以直接输出该对象,是因为该对象的类在定义时有toString方法,所以直接输出对象,可以输出可读信息)

bug

简介

在这里插入图片描述
当数据库中的字段名与实体类的属性名不一致的时候,无法完成自动封装

解决方案

在这里插入图片描述
具体代码
在这里插入图片描述
在这里插入图片描述

着重采用方案三

适用于数据库的字段名与实体类的属性名,区别在于下划线
例如 数据库字段名:user_name 实体类属性名:userName

在这里插入图片描述
直接在resources下 application里配置打开自动转换开关,设置为true即可

查询(根据条件)

简介

在这里插入图片描述

具体代码

接口方法
在这里插入图片描述
这里采用一个拼接函数,可以将字符串拼接起来,防止#{}出现在引号当中,引起错误

因为查询到不止一条记录,所以返回不止一个对象,所以要用一个list<类>集合来保存返回值,参数是查询的条件

在这里插入图片描述
(注意上方还有一个依赖注入,用来创建接口对象)

测试类当中,直接传入参数即可

基础操作(xml映射文件)

简介

在这里插入图片描述

配置

在这里插入图片描述
在resources文件下创建一个包,右键选择Directory 之后不要用点分隔,而是用/,如上图

在这里插入图片描述
之后右键创建文件,文件名与接口类的名字保持一致

进入该文件之后,要先去官网复制下来一段配置文本,直接搜“Mybatis中文网 找到配置文件即可”(入门 然后下滑,找到如下图标注的部分即可)在这里插入图片描述

在这里插入图片描述
再之后按照如上图所示的格式配置sql语句即可

注意先写一个《mapper》
之后在namespace后面是接口的全路径(一般只需配置一次,因为mapper标签在一个xml文件里只有一个,他是最大的标签),在id后面是接口的方法名,在resultType后面是返回值类型,当返回值为一个实体类时,要写全路径

里面sql语句跟注解写sql一样

以下是关于查找全路径的快捷键
在这里插入图片描述

这里有一个小技巧
在这里插入图片描述
对于接口方法,选中方法名,直接alt+回车,就可以自动在xml文件里生成相关功能的标签(前提是方法名要有其功能相关的单词,例如本图中的update),并且写好了id,如下图
在这里插入图片描述
无返回值,就不用再去写其他标签

总结

在这里插入图片描述
包的名称要跟接口一致,而不是真正放在同一个包下

动态SQL

问题分析

在这里插入图片描述
因为我们的sql语句,对于某些参数设置死了,用户必须去对这些参数赋值,否则会查询不到,或者更新空值等问题
所以需要动态的进行sql语句的控制

if标签

概要

在这里插入图片描述
在这里插入图片描述
在xml文件中,先ctrl+alt+v 格式化一下sql代码,之后将where改成where标签,里面每一段sql都用if标签判断,test=“” 引号里面写判断条件
在这里插入图片描述

补充

在这里插入图片描述
在update语句中,要用逗号拼接,所以这里用set标签,会自动去除标签,注意只能自动去除,不能自动添加,所以在编写时,要加上逗号(以及上面where标签内sql语句要加上and)
在这里插入图片描述

总结

在这里插入图片描述

foreach标签

简介

在这里插入图片描述

案例,一般用于批量操作

在这里插入图片描述
xml文件

在这里插入图片描述
接口方法

在这里插入图片描述
测试类

sql include标签

简介

在这里插入图片描述
用于提取出重复性强的代码部分,效果相当于java编码中的方法

具体代码
在这里插入图片描述

在这里插入图片描述

小结

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值