Mybatis学习笔记(三)

一、MyBatis 核心配置文件——mybatis-config.xml

在这里插入图片描述
以前面练手的demo为例子:
在这里插入图片描述
在这里插入图片描述
第一部分:environments(环境配置)
environment(环境变量)
transactionManager(事务管理器)
dataSource(数据源)

1.environment:MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中。note:尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。
在这里插入图片描述
2.transactionManager:项目是Spring + MyBatis类型的,则spring自带的管理器会接管。
在这里插入图片描述
3.dataSource:大多数 MyBatis 应用程序会按标准示例来配置数据源。虽然数据源配置是可选的,但如果要启用延迟加载特性,就必须配置数据源。三种内建的数据源类型:(type=“[UNPOOLED|POOLED|JNDI]”
UNPOOLED– 这个数据源的实现会每次请求时打开和关闭连接。虽然有点慢,但对那些数据库连接可用性要求不高的简单应用程序来说,是一个很好的选择。 性能表现则依赖于使用的数据库,对某些数据库来说,使用连接池并不重要,这个配置就很适合这种情形。UNPOOLED 类型的数据源仅仅需要配置以下 5 种属性:
在这里插入图片描述

POOLED– 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。 这种处理方式很流行,能使并发 Web 应用快速响应请求。
在这里插入图片描述
JNDI – 这个数据源实现是为了能在如 EJB 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的数据源引用。这种数据源配置只需要两个属性:
在这里插入图片描述
除了上述提到 UNPOOLED 下的属性外,还有更多属性用来配置 POOLED 的数据源:
第二部分:类型别名(typeAliases):指定一个具体包,以扫描包的方式进行配置。
在这里插入图片描述
在这里插入图片描述

二、配置文件实现增删改查

实现步骤:
1.准备数据库表 tb_brand;
2.编写对应表的实体类 Brand;
3.编写测试用例;
4.安装 MyBatisX 插件。
step1建表建数据建类
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
step2建测试用例,加核心配置内容
在这里插入图片描述
mybatis-config.xml中增加:
在这里插入图片描述
在这里插入图片描述
step3装插件
MybatisX 是一款基于 IDEA 的快速开发插件,为效率而生。主要功能包括:XML 和接口方法相互跳转;根据接口方法生成 statement。
在这里插入图片描述
mapper接口跟映射文件一一对应,通过小鸟标志跳转到具体某个方法上。
在这里插入图片描述
step4运行及优化
操作一:查询所有数据
实体类属性名和数据库表列名不一致时,不能自动封装数据。
1)起别名:在SQL语句中,对不一样的列名起别名,别名和实体类属性名一样。可以定义sql片段,提升复用性。
2)resultMap:定义resultMap,完成不一致的属性名和列名的映射。
在这里插入图片描述
在这里插入图片描述
MyBatis完成增删改查操作:编写接口方法–> 编写SQL --> 执行方法
操作二:查看单个数据
步骤:mapper中添加方法–>映射文件中对应生成配置–>测试运行
在这里插入图片描述

  1. 参数占位符:
    #{}:执行SQL时,会将#{}占位符替换为?,将来自动设置参数值
    ${}:拼SQL。会存在SQL注入问题。
  2. 使用时机:
    参数传递,都使用#{}。
    如果要对表名、列名进行动态设置,只能使用${}进行sql拼接。
  3. parameterType:用于设置参数类型,该参数可以省略。
  4. SQL 语句中特殊字符处理:
    转义字符<![CDATA[ 内容 ]]>:CD提示

在这里插入图片描述
测试代码中进行传参:
在这里插入图片描述
运行结果:
在这里插入图片描述
操作三:按照条件查询
SQL语句设置多个参数的三种方式:
(1) 散装参数:需要使用@Param(“SQL中的参数名称”)–>使用麻烦
(2)实体类封装参数:只需要保证SQL中的参数名和实体类属性名对应上。
(3)map集合:只需要保证SQL中的参数名和 map集合的键的名称对应上。
1.按条件查询:mapper接口编写方法–>映射文件增加配置–>测试运行
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
操作四:按照条件查询–多条件–动态查询
SQL语句随着用户的输入或外部条件的变化而变化–>动态SQL。
动态SQL的元素:
if
choose (when, otherwise)
trim (where, set)
foreach

在这里插入图片描述
note1:
if:用于判断参数是否有值,使用test属性进行条件判断
* 存在的问题:第一个条件不需要逻辑运算符
* 解决方案:
(1) 使用恒等式让所有条件格式都一样。
(2) 标签替换 where 关键字。
操作五:按照条件查询–单条件–动态查询
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
操作六:添加数据
步骤:mapper接口方法定义–>映射文件增加配置–>测试运行
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
MyBatis事务:
openSession():默认开启事务,进行增删改操作后需要使用 sqlSession.commit(); 手动提交事务
openSession(true):可以设置为自动提交事务(关闭事务)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
note:添加数据–主键返回
在数据添加成功后,需要获取插入数据库数据的主键。
在这里插入图片描述
操作七:修改数据
情形一:修改全部字段(对某条数据的所有属性进行全编辑全覆盖)
情形二:修改动态字段
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
操作八:删除数据
情形一:删除某一条数据
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
情形二:删除批量数据
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、Mybatis参数传递

Mybatis接口方法中可以接收各种各样的参数,Mybatis底层对这些参数进行不同的封装处理。Mybatis通过ParamNameResolver类来进行参数封装。
单个参数:
1. POJO类型:直接使用,属性名和参数占位符名称 一致。
2. Map集合:直接使用,键名和参数占位符名称 一致。
3. Collection:封装为Map集合,可以使用@Param注解,替换Map集合中默认的arg键名。如:
map.put(“arg0”,collection集合);
map.put(“collection”,collection集合);
4. List:封装为Map集合,可以使用@Param注解,替换Map集合中默认的arg键名。如:
map.put(“arg0”,list集合);
map.put(“collection”,list集合);
map.put(“list”,list集合);
5. Array:封装为Map集合,可以使用@Param注解,替换Map集合中默认的arg键名。如:
map.put(“arg0”,数组);
map.put(“array”,数组);
6. 其他类型:直接使用。
多个参数:
封装为Map集合,可以使用@Param注解,替换Map集合中默认的arg键名。如:
map.put(“arg0”,参数值1)
map.put(“param1”,参数值1)
map.put(“param2”,参数值2)
map.put(“agr1”,参数值2)
---------------@Param(“username”)
map.put(“username”,参数值1)
map.put(“param1”,参数值1)
map.put(“param2”,参数值2)
map.put(“agr1”,参数值2) 在这里插入图片描述在这里插入图片描述
在这里插入图片描述

四、使用注解完成增删改查

使用注解开发会比配置文件开发更加方便。
查询:@Select
添加:@Insert
修改:@Update
删除:@Delete

note:注解完成简单功能,配置文件完成复杂功能
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值