栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

有关MyBatis的练习

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

有关MyBatis的练习

目录

1. 配置文件实现CRUD

1.1 环境准备

1.2 查询所有数据

1.3 根据id查询详情

1.4 多条件查询

1.5 单条件动态查询

1.6 添加数据

1.7 修改

1.8 删除一行数据

1.9 批量删除

1.10 Mybatis参数传递

2. 注解实现CRUD


# 博学谷IT技术支持

目标:

  • 能够使用映射配置文件实现CRUD操作

  • 能够使用注解实现CRUD操作

1. 配置文件实现CRUD

在电商网站中,包含了品牌数据的 查询 、按条件查询、添加、删除、批量删除、修改 等功能,而这些功能其实就是对数据库表中的数据进行CRUD操作。接下来我们将演示使用Mybatis完成品牌数据的增删改查操作。

  • 查询

    • 查询所有数据

    • 查询详情

    • 条件查询

  • 添加

  • 修改

    • 修改全部字段

    • 修改动态字段

  • 删除

    • 删除一个

    • 批量删除

1.1 环境准备
  • 数据库表(tb_brand)及数据准备

    -- 删除tb_brand表
    drop table if exists tb_brand;
    -- 创建tb_brand表
    create table tb_brand
    (
        -- id 主键
        id           int primary key auto_increment,
        -- 品牌名称
        brand_name   varchar(20),
        -- 企业名称
        company_name varchar(20),
        -- 排序字段
        ordered      int,
        -- 描述信息
        description  varchar(100),
        -- 状态:0:禁用  1:启用
        status       int
    );
    -- 添加数据
    insert into tb_brand (brand_name, company_name, ordered, description, status)
    values ('三只松鼠', '三只松鼠股份有限公司', 5, '好吃不上火', 0),
           ('华为', '华为技术有限公司', 100, '华为致力于把数字世界带入每个人、每个家庭、每个组织,构建万物互联的智能世界', 1),
           ('小米', '小米科技有限公司', 50, 'are you ok', 1);
  • 实体类 Brand

    在 com.itheima.pojo 包下创建 Brand 实体类。

    public class Brand {
        // id 主键
        private Integer id;
        // 品牌名称
        private String brandName;
        // 企业名称
        private String companyName;
        // 排序字段
        private Integer ordered;
        // 描述信息
        private String description;
        // 状态:0:禁用  1:启用
        private Integer status;
        
        //省略 setter and getter。自己写时要补全这部分代码
    }
  • 编写测试用例

    测试代码需要在 test/java 目录下创建包及测试用例。

  • 安装 MyBatisX 插件

    • MybatisX 是一款基于 IDEA 的快速开发插件,为效率而生。

    • 主要功能

      • XML映射配置文件 和 接口方法 间相互跳转

      • 根据接口方法生成 statement

    • 安装方式

      点击 file ,选择 settings

      注意:安装完毕后需要重启IDEA

    • 插件效果

      红色头绳的表示映射配置文件,蓝色头绳的表示mapper接口。在mapper接口点击红色头绳的小鸟图标会自动跳转到对应的映射配置文件,在映射配置文件中点击蓝色头绳的小鸟图标会自动跳转到对应的mapper接口。也可以在mapper接口中定义方法,自动生成映射配置文件中的 statement ,如图所示

1.2 查询所有数据

1.2.1 编写接口方法

在 com.itheima.mapper 包写创建名为 BrandMapper 的接口。并在该接口中定义

List selectAll()

方法。

  • 参数:无

    查询所有数据功能是不需要根据任何条件进行查询的,所以此方法不需要参数。

  • 结果:List

    我们会将查询出来的每一条数据封装成一个 Brand 对象,而多条数据封装多个 Brand 对象,需要将这些对象封装到List集合中返回。

1.2.2 编写SQL语句

在 resources 下创建 com/itheima/mapper 目录结构,并在该目录下创建名为 BrandMapper.xml 的映射配置文件

  • 实体类中属性名 brandName 和 companyName ,与表中的字段名brand_name 和 company_name不一致,所以使用resultMap解决上述问题



​

    
    
    
    

    
    select *
    from tb_brand where id = #{id};

1.3.3 编写测试方法

  • 在 test/java 下的 com.itheima.mapper 包下的 MybatisTest类中 定义测试方法

     //4. 执行方法
        Brand brand = brandMapper.selectById(id);
        System.out.println(brand);

1.3.4 注意

1.4 多条件查询

1.4.1 编写接口方法

在 BrandMapper 接口中定义多条件查询的方法。

而该功能有三个参数,我们就需要考虑定义接口时,参数应该如何定义。Mybatis针对多参数有多种实现

  • 使用 @Param("参数名称") 标记每一个参数,在映射配置文件中就需要使用 #{参数名称} 进行占位

    List selectByCondition(@Param("status") int status,
     @Param("companyName") String companyName,
    @Param("brandName") String brandName);
  • 将多个参数封装成一个 实体对象 ,将该实体对象作为接口的方法参数。该方式要求在映射配置文件的SQL中使用 #{内容} 时,里面的内容必须和实体类属性名保持一致。

    List selectByCondition(Brand brand);
  • 将多个参数封装到map集合中,将map集合作为接口的方法参数。该方式要求在映射配置文件的SQL中使用 #{内容} 时,里面的内容必须和map集合中键的名称一致。

    List selectByCondition(Map map);

1.4.2 编写SQL语句

在 BrandMapper.xml 映射配置文件中编写 statement,使用 resultMap 而不是使用 resultType


    select *
    from tb_brand
    
        
            and status = #{status}
        
        
            and company_name like #{companyName}
        
        
            and brand_name like #{brandName}
        
    

1.5 单条件动态查询

1.5.1 编写接口方法

List selectByConditionSingle(Brand brand);

1.5.2 编写SQL语句