【mybatis】06 -查询 查看详情

news/2024/7/5 2:54:51
  • 学习mybatis的获取参数的一种方式
  1. 编写mapper接口
package com.ljh.mapper;

import com.ljh.pojo.Brand;

import java.util.List;

public interface BrandMapper {
//    1. 获取id,返回对应的公司详情
    public Brand selectById(int id);
}
  1. 生成mapper语句
<?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.ljh.mapper.BrandMapper">
<!--    利用resultMap进行属性值和数据库字段进行映射-->
    <resultMap id="brandResultMap" type="brand">
        <result column="brand_name" property="brandName"></result>
        <result column="company_name" property="companyName"></result>
    </resultMap>
    <!--注意:此处要用resultMap属性绑定resultMap字段-->
    <select id="selectById" resultMap="brandResultMap">
        select *
        from tb_brand where id = #{id};
    </select>
</mapper>
  1. app测试
package com.ljh.test;

import com.ljh.mapper.BrandMapper;
import com.ljh.pojo.Brand;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class MybatisTest {
    @Test
    public void testSelectAll() throws IOException {
        //1.获取session工厂
        String resource = "mybatis-config";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //2.获取session
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //3.获取mapper
        BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
        //4.执行sql
        //接收数据
        int id = 1;
        Brand brand = mapper.selectById(id);
        System.out.println(brand);
        //5.关闭资源
        sqlSession.close();
    }
}
  1. 运行结果
    在这里插入图片描述
  2. 资源分析
    select *
    from tb_brand where id = #{id};
    对于#{id}:参数占位符/还有 i d 都可以用。但是 {id}都可以用。但是 id都可以用。但是{id}会存在sql注入问题,不太好
    使用时机:参数传递:#{id} 动态查询表:${id}:动态查询要将表名传输给数据库时有用。
  • parameterType:获取的参数类型:一般不写。因为一般接口方法的形参就给定了。
  • 特殊字符的处理:如<符号会报错
    • 解决办法:&lt
    • 解决办法:CDATA区
      在这里插入图片描述

http://lihuaxi.xjx100.cn/news/950549.html

相关文章

【并发编程学习篇】深入理解CyclicBarrier

一、CyclicBarrier介绍 字面意思回环栅栏&#xff08;循环屏障&#xff09;&#xff0c;通过它可以实现让一组线程等待至某个状态&#xff08;屏障点&#xff09;之后再全部同时执行。叫做回环是因为当所有等待线程都被释放以后&#xff0c;CyclicBarrier可以被重用。 和Count…

已解决ERROR: Failed building wheel for opencv-python-headless

已解决ERROR: Failed building wheel for opencv-python-headless Failed to build opencv-python-headless ERROR: Could not build wheels for opencv-python-headless, which is required to install pyproject.toml-based projects报错信息亲测有效 文章目录报错问题报错翻…

SpringCloud系列知识快速复习 -- part 1(SpringCloud基础知识,Docker,RabbitMQ)

SpringCloud知识快速复习SpringCloud基础知识微服务特点SpringCloud常用组件服务拆分和提供者与消费者概念Eureka注册中心原理Ribbon负载均衡原理负载均衡策略饥饿加载Nacos注册中心服务分级存储模型权重配置环境隔离Nacos与Eureka的区别Nacos配置管理拉取配置流程配置热更新配…

具备“结构化思维”的优势

导读&#xff1a; 在日常工作中&#xff0c;我们时常会碰到这样的情况&#xff0c;有的人讲事情逻辑非常混乱&#xff0c;罗列了很多事项&#xff0c;却把握不到重点&#xff0c;无法把一件事情说清楚。这种思维混乱是典型的缺少结构化思维的表现。结构化思维非常重要&#xff…

freertos 学习记录

1.同优先级的任务时交替执行2.在默认的调度机制下&#xff0c;高优先级的任务先执行。如果高优先级的任务没有主动放弃执行的话&#xff0c;其他低优先级的任务得不到执行。3.使用同一个任务函数&#xff0c;可以创建多个多个任务。每个任务都有自己的栈空间&#xff0c;所以每…

应用程序性能优化方案,web服务五级缓存优化,服务器性能优化...

winfrom 全局异常捕获WPF 全局异常捕获Asp.Net全局异常捕获MVC 全局异常捕获AspNetNetCore 全局异常捕获一级缓存html/css/js 前端缓存二级缓存Asp.Net MVC AspNetCore 客户端缓存设置三级缓存服务端缓存四级redis 数据库缓存服务端缓存五级sqlserver 数据库缓存设置分布式缓存…

urp SpotLight 衰减方式扩展

背景&#xff1a; 解决默认spotLight 的衰减模式下&#xff0c; 在距离灯光特别近的时候&#xff0c;灯光过爆的情况 解决方法&#xff1a; 修改SpotLight的衰减方式 下图是unity给出的几种衰减模式以及图示&#xff1a; 其中InverseSquare是当前2021.2 unity版本中urp(12.1…

操作系统权限提升(十九)之Linux提权-SUID提权

系列文章 操作系统权限提升(十八)之Linux提权-内核提权 SUID提权 SUID介绍 SUID是一种特殊权限&#xff0c;设置了suid的程序文件&#xff0c;在用户执行该程序时&#xff0c;用户的权限是该程序文件属主的权限&#xff0c;例如程序文件的属主是root&#xff0c;那么执行该…