查询

查询的数据为单条实体类

使用实体类进行接受即可,或者使用list,map接口均可.后面两者比较浪费

  1. 使用实体类接受

mapper接口:


User selectUserById(int userid);

映射文件:使用实体类



    <!--第二个一致,对应方法名    User selectUserById(int userid); -->
<select id="selectUserById" resultType="user">
select * from user where userid=#{userid}
</select>
  1. 使用Map接收

mapper接口:

Map<String ,Object> selectUserById2(@Param("userid")int userid);

映射文件:

<!--    Map<String ,Object> selectUserById();-->
<select id="selectUserById2" resultType="map">
select * from user where userid=#{userid}
</select>

调用:以获取UserMapper接口的对象userMapper


Map<String ,Object> map=userMapper.selectUserById2(1);
System.out.println(map.toString());

查询多条数据时

使用list集合接受,或者用list包裹map查询,或者使用map集合+Mapkey("")注解

  1. 使用List集合

mapper接口:


List<User> selectAllUser();

映射文件:

<!--    List<User> selectAllUser();-->
<select id="selectAllUser" resultType="User">
select * from user;
</select>

调用:

//已经获取sqlSession的情况下,创建完Usermapper对象
List<User> list= userMapper.selectAllUser();
for (User user:list) {
System.out.println(user);
}
  1. 使用map+Mapkey(""),此时将注解中的属性作为map的key,其余属性作为值

mapper接口:


@MapKey("userid")//使用userid作为键,其余属性为值
Map<String,Object> selectAllUser2();

映射文件:

    <!-- Map<String,Object> selectAllUser2();-->
<select id="selectAllUser2" resultType="map">
select * from user;
</select>

调用:


Map<String ,Object> map2=userMapper.selectAllUser2();
System.out.println(map2.toString());

查询单个数量

mapper接口:

int selectCount();

映射文件:

<!--    int selectCount();-->
<select id="selectCount" resultType="int">
select count(*) from user;
</select>

对于基本属性,均提供了其默认的别名可以直接在result Type中使用

模糊查询

mapper接口:这里使用username进行模糊查询


List<User> selectUserByLikeName( @Param("username") String username);

映射文件:这里可以使用三种方式,第一种是使用${},因为#{}无法在单引号中使用,要么使用concat()进行拼接+#{},或者使用双引号的方式括住%,常用第三种

<!--    List<User> selectUserByLikeName( @Param("username") String username);-->
<select id="selectUserByLikeName" resultType="User">
<!-- select * from user where username like '%${username}%' -->
<!-- select * from user where username like concat('%',#{username},'%') -->
select * from user where username like "%"#{username}"%"
</select>

Mybatis查询的更多相关文章

  1. mybatis 查询 xml list参数

    mybatis 查询 xml list参数: <select id="getByIds" resultType="string" parameterTyp ...

  2. MyBatis 查询映射自定义枚举

    背景                  MyBatis查询若想映射枚举类型,则需要从 EnumTypeHandler 或者 EnumOrdinalTypeHandler 中选一个来使用         ...

  3. mybatis查询异常-Error querying database. Cause: java.lang.ClassCastException: org.apache.ibatis.executor.ExecutionPlaceholder cannot be cast to java.util.List

    背景,mybatis查询的时候直接取的sqlsession,没有包装成SqlSessionTemplate,没有走spring提供的代理. 然后我写的获取sqlsession的代码没有考虑到并发的情况 ...

  4. mybatis查询语句的背后

    转载请注明出处... 一.前言 在先了解mybatis查询之前,先大致了解下以下代码的为查询做了哪些铺垫,在这里我们要事先了解,myabtis会默认使用DefaultSqlSessionFactory ...

  5. mybatis查询语句的背后之参数解析

    转载请注明出处... 一.前言 通过前面我们也知道,通过getMapper方式来进行查询,最后会通过mapperMehod类,对接口中传来的参数也会在这个类里面进行一个解析,随后就传到对应位置,与sq ...

  6. mybatis查询语句的背后之封装数据

    转载请注明出处... 一.前言 继上一篇mybatis查询语句的背后,这一篇主要围绕着mybatis查询的后期操作,即跟数据库交互的时候.由于本人也是一边学习源码一边记录,内容难免有错误或不足之处,还 ...

  7. mybatis查询结果和接收的不一样

    记一次大坑:mybatis查询结果和接收的不一样,折腾我好几个小时. 先上代码:代码是要查询排名,sql执行的结果 SELECT b.operator_id, b.class_count, b.cla ...

  8. 【mybatis】【mysql】mybatis查询mysql,group by分组查询报错:Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column

    mybatis查询mysql,group by分组查询报错:Expression #1 of SELECT list is not in GROUP BY clause and contains no ...

  9. 使用MyBatis查询 返回类型为int,但是当查询结果为空NULL,报异常的解决方法

    使用MyBatis查询 返回类型为int,但是当查询结果为空NULL,会报异常. 例如: <select id="getPersonRecordId" parameterTy ...

  10. mybatis查询日期时间数据得到long类型数据的问题

    使用mybatis查询数据时,如果数据库存储的是timestamp.datetime.date.time等时间类型,而Java bean也使用的是date类型,mybatis会自动将date类型转换为 ...

随机推荐

  1. 4.0 SDK Workshop 纪实:一起体验多人、多屏幕共享新功能

    在本月初,声网发布了 RTC Native SDK 4.0 版本.该版本提供了更高的开发灵活度,可明显提升实时场景开发效率,并让第三方插件开发更容易.上周六(8月20日),我们组织了一场小型的线下 W ...

  2. Android 音视频 - MediaCodec 编解码音视频

    我们知道 Camera 采集回传的是 YUV 数据,AudioRecord 是 PCM,我们要对这些数据进行编码(压缩编码),这里我们来说在 Android 上音视频编解码逃不过的坑-MediaCod ...

  3. FWT/快速沃尔什变换 入门指南

    来学点好玩的. 引入 我们也许学过,\(FFT\) 可以解决一类卷积: \[C_i=\sum^{k+j=i} A_iB_j \] 现在我们稍微变一下式子: \[C_i=\sum^{i=k \And j ...

  4. vue2升级vue3:vue-i18n国际化异步按需加载

    vue2异步加载之前说过,vue3还是之前的方法,只是把 i18n.setLocaleMessage改为i18n.global.setLocaleMessage 但是本文还是详细说一遍: 为什么需要异 ...

  5. Java并发夺命50问

    本文已经收录到Github仓库,该仓库包含计算机基础.Java基础.多线程.JVM.数据库.Redis.Spring.Mybatis.SpringMVC.SpringBoot.分布式.微服务.设计模式 ...

  6. Auto Photoshop StableDiffusion - 这是一款可以在 Photoshop 中使用 AI 智能 Automatic1111 进行插画、海报等设计的插件

    简介 Auto Photoshop StableDiffusion - 这是一款可以在 Photoshop 中使用 AI 智能 Automatic1111 进行插画.海报等设计的插件,此插件可以是你在 ...

  7. Stanford CS 144, Lab 0: networking warmup 实验

    Stanford CS 144, Lab 0: networking warmup Finish Stanford CS144 lab0 and pass the test. 2023/03/29 - ...

  8. # SpringBoot使用Validation校验参数 ##

    SpringBoot使用Validation校验参数 一.简介 参考 (14条消息) 1. 不吹不擂,第一篇就能提升你对Bean Validation数据校验的认知_@decimalmax和@max_ ...

  9. 【入门排坑】Windows之间使用OpenSSH的ssh免密登录,排坑

    安装 安装OpenSSH 需要安装OpenSSH客户端和服务器,win10自带客户端,我们安装服务器即可. 设置 -- 应用 -- 可选功能 -- 添加 -- 添加 OpenSSH 服务器 配置 公钥 ...

  10. Java设计模式 —— 工厂模式

    3 简单工厂模式 3.1 创建型模式 Creational Pattern 关注对象的创建过程,对类的实例化过程进行了抽象,将软件模块中对象的创建和对象的使用分离,对用户隐藏了类的实例的创建细节.创建 ...