当前位置: 首页 > article >正文

Mybatis:CRUD数据操作之单条件查询

Mybatis基础环境准备请看:Mybatis基础环境准备
本篇讲解Mybati数据CRUD数据操作之单条件查询

1,编写接口方法

com.itheima.mapper 包写创建名为 BrandMapper 的接口。并在该接口中定义 List<Brand> selectAll() 方法。

/**
  * 查看详情:根据Id查询
  */
Brand selectById(int id);

2,编写SQL语句

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

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.itheima.mapper.BrandMapper">
    <resultMap id="brandResultMap" type="brand">
        <!--
            id:完成主键字段的映射
                column:表的列名
                property:实体类的属性名
            result:完成一般字段的映射
                column:表的列名
                property:实体类的属性名
        -->
        <result column="brand_name" property="brandName"/>
        <result column="company_name" property="companyName"/>
    </resultMap>


   <select id="selectById"  resultMap="brandResultMap">
    select *
    from tb_brand where id = #{id};
</select>
</mapper>

3,编写测试方法

MybatisTest 类中编写测试查询所有的方法

 @Test
public void testSelectById() throws IOException {
    //接收参数,该id以后需要传递过来
    int id = 2;

    //1. 获取SqlSessionFactory
    String resource = "mybatis-config.xml";
    InputStream inputStream = Resources.getResourceAsStream(resource);
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

    //2. 获取SqlSession对象
    SqlSession sqlSession = sqlSessionFactory.openSession();

    //3. 获取Mapper接口的代理对象
    BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);

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

    //5. 释放资源
    sqlSession.close();
}

执行测试方法结果如下:
在这里插入图片描述

结果与数据库里信息一致。

4,参数占位符

控制台显示的SQL语句,能看到使用?进行占位。说明我们在映射配置文件中的写的 #{id} 最终会被?进行占位
mybatis提供了两种参数占位符:

  • #{} :执行SQL时,会将 #{} 占位符替换为?,将来自动设置参数值。从上述例子可以看出使用#{} 底层使用的是 PreparedStatement

  • ${} :拼接SQL。底层使用的是 Statement,会存在SQL注入问题

    <select id="selectById"  resultMap="brandResultMap">
        select *
        from tb_brand where id = ${id};
    </select>
    

    大家开发过程中,还是使用#{}占位!

4,parameterType使用

对于有参数的mapper接口方法,我们在映射配置文件中应该配置 ParameterType 来指定参数类型。只不过该属性都可以省略。如下图:

  <select id="selectById" parameterType="int"  resultMap="brandResultMap">
    select *
    from tb_brand where id = #{id};
</select>

5,SQL语句中特殊字段处理

SQL语句中会有特殊字符,比如大于号。
因为映射配置文件是xml类型的问题,而 > < 等这些字符在xml中有特殊含义,所以此时我们需要将这些符号进行转义,可以使用以下两种方式进行转义:

  • 转义字符

下图的 &lt; 就是 < 的转义字符。
在这里插入图片描述

  • CDATA区

    <![CDATA[ 内容 ]]>

在这里插入图片描述

[声明]:内容主要来源黑马程序员网上资源学习


http://www.kler.cn/a/417476.html

相关文章:

  • DeepSeek私有化本地部署图文(Win+Mac)
  • 【Uniapp-Vue3】z-paging插件组件实现触底和下拉加载数据
  • Denavit-Hartenberg DH MDH坐标系
  • LabVIEW涡轮诊断系统
  • 机器学习--2.多元线性回归
  • 我们来学人工智能 -- 感悟DeepSeek
  • YOLO模型训练后的best.pt和last.pt区别
  • HTML技术深度解析:构建现代网页的基石
  • redis-bitmap使用详解
  • kubernetes——part3-2 集群声明式文件YAML
  • STL简介
  • 短视频账号矩阵系统源码--独立saas技术部署
  • 计算机视觉工程师紧张学习中!
  • keil 5. Flash Timeout. Reset the Target and try it again.
  • css—动画
  • Unix网络编程笔记(一、简介和TCP/IP)
  • ProtonBase 教育行业解决方案
  • ARM架构下安装新版docker及docker-compose
  • 渗透测试kali虚拟机分享(附网盘链接)
  • 创建maven私人创库nexus
  • 如何全面备份你的Mac电脑:邮件、联系人、桌面文件和Safari书签
  • 【论文阅读】Multi-level Semantic Feature Augmentation for One-shot Learning
  • keepalived+lVS(dr)高可用集群
  • Z2400039基于Java-+ SpringBoot + vue 企业信息管理系统的设计与实现(源码 配置 PPT 文档 分享)
  • 家庭记账本小程序
  • 工作坊报名|使用 TEN 与 Azure,探索你的多模态交互新场景