MyBatis——案例——查询-查询所有
查询-查询所有数据
1、创建相应Mapper接口文件 以及Mapper配置信息文件

修改配置文件中 namespace :

2、编写接口方法:Mapper 接口
参数:无
结果:List<Brand>

3、编写SQL语句(接口文件中按Alt+回车快速编写)

4、执行方法,测试
(1)获取 SQLSessionFactory 对象
//1、获取 SqlSessionFactory 对象
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
(2)获取 SQLSession 对象
// 2、获取 SQLSession 对象
SqlSession sqlSession = sqlSessionFactory.openSession();
(3)获取Mapper接口代理对象
// 3、获取Mapper接口代理对象
BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
(4)执行方法
// 4、执行方法
List<Brand> brands = brandMapper.selectAll();
// 打印
System.out.println(brands);
(5)释放资源
// 5、释放资源
sqlSession.close();
(6)运行结果

发现brandName 和 companyName 显示为 null
原因:数据库表的字段名称(下划线命名法) 和 实体类的属性名称(驼峰命名法) 不一样 ,则不能自动封装数据
解决方案:
* 起别名 :对不一样的列名起别名,让别名和实体类的属性名一样
<select id="selectAll" resultType="com.cqupt.pojo.Brand">
select id, brand_name brandName, company_name companyName, orderd, description, status
from tb_brand;
</select>
起别名之后显示正常:

* 缺点:每次都要定义一次别名 如果查询次数过多 显示一长串不美观
* 采用 sql片段
<!--sql片段-->
<sql id="brand_column">
id, brand_name brandName, company_name companyName, orderd, description, status
</sql>
<select id="selectAll" resultType="com.cqupt.pojo.Brand">
select
<include refid="brand_column"></include>
from tb_brand;
</select>
* 缺点:不灵活
最多使用的方法:resultMap 映射
<!--
id :唯一标识
type :映射的类型 支持别名
-->
<resultMap id="brandResultMap" type="com.cqupt.pojo.Brand">
<!--
id :主键字段的映射
column :表的列名
property :实体类的属性名
result :一般字段的映射
column :表的列名
property :实体类的属性名
-->
<!-- 这里仅需完成对一般字段映射 所以使用的result -->
<result column="brand_name" property="brandName" />
<result column="company_name" property="companyName" />
</resultMap>
<select id="selectAll" resultMap="brandResultMap">
select
*
from tb_brand;
</select>
MyBatis——案例——查询-查询所有的更多相关文章
- Mybatis之关联查询
一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关 ...
- Mybatis多条件查询
在Mybatis多条件查询中: 1.参数如果是多条件,则需要将将添加到Map集合中进行传入. 2.就是将其参数用有序数字进行代替. Mybatis单个String类型参数传递 mysql文如下,传入参 ...
- 【转载】Mybatis多参数查询映射
转载地址:http://www.07net01.com/zhishi/402787.html 最近在做一个Mybatis的项目,由于是接触不久,虽然看了一下资料,但在实际开发中还是暴 露了很多问题,其 ...
- Mybatis包分页查询java公共类
Mybatis包分页查询java公共类 分页----对于数据量非常大的查询中.是不可缺少的. mybatis底层的分页sql语句因为须要我们自己去手动写.而实现分页显示的时候我们须要依据分页查询条 ...
- mybatis的collection查询问题以及使用原生解决方案的结果
之前在springboot+mybatis环境的坑和sql语句简化技巧的第2点提到,数据库的一对多查询可以一次查询多级数据,并且把拿到的数据按id聚合,使父级表和子级表都有数据. 但是这种查询,必然要 ...
- SpringBoot+Mybatis实现关联查询
SpringBoot+Mybatis实现关联查询 今天学习了下Mybatis的动态查询,然后接着上次的Demo改造了下实现表的关联查询. 话不多说,开始今天的小Demo 首先接着上次的项目 https ...
- MyBatis学习——分步查询与延迟加载
声明:面试是遇到延迟加载问题,在网页搜索到此篇文章,感觉很有帮助,留此学习之用! 一.分步查询 分步查询通常应用于关联表查询,如:电商平台,查询订单信息时需要查询部分的用户信息:OA系统查询个人信息时 ...
- MyBatis实现模糊查询的几种方式
在学习MyBatis过程中想实现模糊查询,可惜失败了.后来上百度上查了一下,算是解决了.记录一下MyBatis实现模糊查询的几种方式. 数据库表名为test_student,初始化了几条记录,如图: ...
- MyBatis多对多查询
-------------------siwuxie095 MyBatis 多对多查询 以订单和商品为例,即 一个订单可 ...
- MyBatis之一对多映射查询sql配置文件。
学生---文章的模型一对多模型 学生student.java类 package com.bjsxt.sxf.po; import java.util.Date; import java.util.Li ...
随机推荐
- [oeasy]python0012_程序写错了怎么办
运行python文件_报错处理_NameError 回忆上次内容 回忆 上次内容 vi oeasy.py 用 vi 编辑 oeasy.py cat oeasy.py 用 cat 查看 oeasy. ...
- JavaScript高级~数组偏平化
方式一: let arr=[11,[22,[33,[44]]],[55,66,77],88,99,['00']] let arr2=arr.toString().split("," ...
- 洛谷P1029 [NOIP2001 普及组] 最大公约数和最小公倍数问题
[NOIP2001 普及组] 最大公约数和最小公倍数问题 题目描述 洛谷题目链接:https://www.luogu.com.cn/problem/P1029 输入两个正整数 x, y,求出满足下列条 ...
- mysql数据库无法录入汉字问题
1.插入数据出现错误 show full columns from 表名;//查看数据表列编码 2. alter table 表名 change 列名 列名 varchar(自己设置) charact ...
- RHCA cl210 016 流表 overlay
Overlay网络是建立在Underlay网络上的逻辑网络 underlay br-int 之间建立隧道 数据流量还是从eth1出去 只有vlan20 是geneve隧道.只有租户网络有子网,子网需要 ...
- Jmeter函数助手15-FiletoString
FiletoString函数用于一次读取整个文件值. 输入文件的全路径:填入文件路径 File encoding if not the platform default (opt):读取文件的编码格式 ...
- 【Vue】Re12 Webpack 第三部分(插件、热部署、配置分离)
一.HtmlWebpackPlugin webpack插件安装: npm install html-webpack-plugin --save-dev // 版本太高构建报错原因换这个 npm ins ...
- 【全】CSS动画大全之其他【火影忍者动态背景】
效果预览 代码 <!DOCTYPE html> <html> <head> <head> <meta charset="utf-8&qu ...
- 【牛客刷题】HJ5 进制转换
题目链接 基本上能用最简单代码实现的,就不要考虑的太复杂: package main import "fmt" func main() { a := 0 fmt.Scanf(&qu ...
- Linux驱动|cdev_init、cdev_alloc区别
这两个函数是字符设备初始化相关的内核函数. 要想了解这两个函数,必须要知道字符设备的架构,以及字符设备创建的流程. 关于字符设备可以参考下面这篇文章 <手把手教Linux驱动3-之字符设备架构详 ...