写点什么

JavaWeb MyBatis

作者:Emperor_LawD
  • 2022 年 5 月 18 日
  • 本文字数:1200 字

    阅读完需:约 4 分钟

JavaWeb MyBatis

MyBatis 简介

概述

  • 一款优秀的持久层框架,用于简化 JDBC 的开发

  • 持久层

  • 负责数据保存到数据库

  • JaveEE 三层框架

  • 表现层

  • 业务层

  • 持久层

优点

  • 将 JDBC 中注册驱动、获取连接和 SQL 语句进行封装

  • 简化获取参数和获得结果集的工作

快速入门

  1. 创建 User 表,添加数据

  2. 创建模块,导入坐标

  3. 编写 MyBatis 核心配置文件 → 替换连接信息,解决硬编码问题

  4. 编写 SQL 映射文件 → 统一管理 sql 语句,解决硬编码问题

  5. 编码

  6. 定义 POJO 类

  7. 加载核心配置文件,获取 SqlSessionFactory 对象

  8. 获取 SqlSession 对象,执行 SQL 语句

  9. 释放资源

Mapper 代理

步骤

  1. 定义与 SQL 映射文件同名的 Mapper 接口,并且将 Mapper 接口和 SQL 映射文件放置在同一目录下

  • 创建同名文件夹即可

  • resources 文件下创建文件夹:com/lawd/mapper(与 java 中不同:com.lawd.mapper)

  1. 设置 SQL 映射文件的 namespace 属性为 Mapper 接口全限定名

  2. 在 Mapper 接口中定义方法,方法名就是 SQL 映射文件中 sql 语句的 id,并保持参数类型和返回值类型一致

  3. 编码

  • 通过 SqlSession 的 getMapper 方法获取 Mapper 接口的代理对象

  • 调用对应方法完成 sql 的执行

配置文件及增删改查

配置文件

  • environments:配置数据库连接环境信息,可以配置多个 environment,通过 default 属性切换不同的 environment

配置文件增删改查

  • 查询

  • 查询所有数据

  • 编写接口方法:Mapper 接口

  • 编写 SQL 语句:SQL 映射文件

  • 数据库字段名和实体类名不一致时的解决方法

  • 执行方法,测试

  • 查看详情

  • 根据 id 查询

  • 条件查询

  • 多条件查询

  • 多条件动态查询

  • 动态 SQL mybatis – MyBatis 3 | 动态 SQL

  • 单条件动态查询

  • 添加

  • 修改

  • 修改全部字段

  • 修改动态字段

  • 删除

  • 删除一个

  • 批量删除

参数传递

MyBatis 接口方法中可以接收各种各样的参数,MyBatis 提供了 ParamNameResolver 类来进行参数封装

单个参数

  • POJO 类型

  • 直接使用,属性名 和 参数占位符名称一致

  • Map 集合

  • 直接使用,键名 和 参数占位符名称一致

  • Collection

  • 封装为 Map 集合,使用 @Param 注解来设置参数名称

map.put("arg0", collection集合);map.put("collection", collection集合);
复制代码


  • List

  • 封装为 Map 集合,使用 @Param 注解来设置参数名称

map.put("arg0", list集合);map.put("collection", list集合);map.put("list", list集合);
复制代码


  • Array

  • 封装为 Map 集合,使用 @Param 注解来设置参数名称

map.put("arg0",数组);map.put("array", 数组);
复制代码


  • 其他类型

  • 直接使用

多个参数


  • 封装为 Map 集合,可以使用 @Param 注解来设置参数名称,替换 Map 集合中默认的 arg 键名

  • 默认

map.put("arg0", 参数值1);map.put("arg1", 参数值2);// 或者map.put("param0", 参数值1);map.put("param1", 参数值2);// @Param("username")map.put("username", 参数值1);
复制代码

注解

使用注解比使用配置文件更加方便


  • 查询:@Select


    @Select("Select * from tb_user where id = #{id}")    public User selectById(int id);
复制代码


  • 添加:@Insert

  • 修改:@Update

  • 删除:@Delete


注:简单的语句可以用注解完成,复杂的语句用 xml 映射

发布于: 刚刚阅读数: 6
用户头像

Emperor_LawD

关注

愿能如萤火一般,可以在黑夜里发一点光。 2021.05.19 加入

还未添加个人简介

评论

发布
暂无评论
JavaWeb MyBatis_mybatis_Emperor_LawD_InfoQ写作社区