MyBatis基础入门《三》Select查询集合
MyBatis基础入门《三》Select查询集合
描述:
代码新增了一个MybatisUtil工具类,查询数据库返回集合的时候,接收数据的三种方式。由于代码会渐渐增多,未涉及改动过的文件不再粘贴出来。
项目结构:

ClientMapper.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.charles.dao.ClientMapper"> <resultMap type="com.charles.entity.TblClient" id="tblClientID">
<id property="cid" column="id" />
<result property="cname" column="client_name"/>
<result property="caddress" column="client_address"/>
<result property="cbirthday" column="client_birthday"/>
</resultMap> <!-- 查询数据库 -->
<select id="getCount" resultType="int">
SELECT COUNT(*) FROM tbl_client
</select> <!--
#########################################################################################################
实体类:TbClient.java 中的属性和数据库中表字段的属性不一样,所以需要进行手动配置映射关系。 如果实体类:TbClient.java中的属性和数据库中表字段的属性是一样的,那就不需要进行配置了,
执行使用 resultType="com.charles.entity.TbClient"即可,有点类似方式二,从数据库中查询出来的列名刚好就是
实体类TbClient.java中的属性名
#########################################################################################################
--> <!--
查询所有的用户. 方式1
使用此方式需要使用resultMap标签进行定义实体类属性和数据库中表字段之间的映射关系。
-->
<!-- <select id="getClientAll" resultMap="tblClientID"> -->
<!-- SELECT * FROM tbl_client -->
<!-- </select> --> <!-- 查询所有的用户. 方式2 -->
<!-- <select id="getClientAll" resultType="com.charles.entity.TblClient"> -->
<!-- SELECT -->
<!-- id as cid, -->
<!-- client_name as cname, -->
<!-- client_address as caddress, -->
<!-- client_birthday as cbirthday -->
<!-- FROM tbl_client -->
<!-- </select> --> <!--
查询所有的用户. 方式3
使用此方式需注意两点:
1. 需要在 mybatis-config.xml文件中,配置别名baitang
2. SQL 语句需要使用别名 对应 实体类TbClient.java 中的属性名
-->
<select id="getClientAll" resultType="baitang">
SELECT
id as cid,
client_name as cname,
client_address as caddress,
client_birthday as cbirthday
FROM tbl_client
</select> </mapper>
注意:
>>方式1:
resultMap 自动映射匹配前提:字段名和属性名必须一致。
resultMap的自动映射级别-autoMappingBehavior
PARATIAL(默认):自动匹配所有
resultMap使用场景:
>>> 数据库自动信息与对象属性不一致。
>>> 复杂的联合查询,自由控制映射结果
MyBatisUtil.java
package com.charles.util; import java.io.IOException;
import java.io.InputStream; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class MyBatisUtil { private static SqlSessionFactory factory = null; /** 在静态代码块下,factory只会被创建一次 **/
static {
try {
InputStream inputStream = Resources.getResourceAsStream("mybatis/mybatis-config.xml");
factory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
} /**
* 获取SQLSession方法
*
* @return SQLSession
**/
public static SqlSession getSqlSession() { // 开启事物
return factory.openSession(false);
} /**
* 关闭SQLSession方法
*
* @param SQLSession对象
*/
public static void closeSqlSession(SqlSession sqlSession) { if (sqlSession != null) {
sqlSession.close();
}
}
}
mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!--
注意:
这个配置文件的标签是有顺序的,必须按照这个顺序书写。
例如:settings标签就必须放在properties标签的后面。
--> <!-- 引入database.properties文件 -->
<properties resource="properties/database.properties"></properties> <!-- 配置mybatis的log实现log4j -->
<settings>
<setting name="logImpl" value="STDOUT_LOGGING" />
</settings> <!-- 配置别名 -->
<typeAliases>
<typeAlias type="com.charles.entity.TblClient" alias="baitang"/>
</typeAliases> <!-- 配置Mybatis的环境 -->
<environments default="development">
<environment id="development">
<!-- 配置事物管理 -->
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments> <!-- 将Mapper文件加入到mybatis的配置文件中 -->
<mappers>
<mapper resource="com/charles/dao/ClientMapper.xml" />
</mappers> </configuration>
JunitMybatisUtil.java
package com.charles.junit; import java.util.List; import org.apache.ibatis.session.SqlSession;
import org.junit.Test; import com.charles.entity.TblClient;
import com.charles.util.MyBatisUtil; public class JunitMybatisUtil { @Test
public void junitUnit() { /** 1. 获取SQLSession **/
SqlSession session = MyBatisUtil.getSqlSession(); /** 2. 调度方法,从数据库中获取数据 **/
String resource = "com.charles.dao.ClientMapper.getClientAll";
List<TblClient> list = session.selectList(resource); /** 3. 关闭SQLSession **/
MyBatisUtil.closeSqlSession(session); for(TblClient client : list ) {
System.out.println(client.getCid() + "\t" + client.getCname() + "\t" + client.getCaddress() + "\t" + client.getCbirthday());
}
}
}
如有问题,欢迎纠正!!!
如有转载,请标明源处:https://www.cnblogs.com/Charles-Yuan/p/9861513.html
MyBatis基础入门《三》Select查询集合的更多相关文章
- MYSQL—— 基础入门,select 查询涉及到的关键字组合详解(进阶篇)
SELECT查询组合使用的关键字很多,首先将最简单常用的关键字进行区分及使用,后续再继续补充............ 以下所有的关键字组合使用,主要以两个表students与students_scor ...
- MyBatis基础入门《四》接口方式.Select查询集合
MyBatis基础入门<四>接口方式.Select查询集合 描述: 在<MyBatis基础入门<二>Select查询>中有说过,SQLSession有两种用法,这里 ...
- MyBatis基础入门《二》Select查询
MyBatis基础入门<二>Select查询 使用MySQL数据库,创建表: SET NAMES utf8mb4; ; -- ---------------------------- -- ...
- MyBatis基础入门《六》Like模糊查询
MyBatis基础入门<六>Like模糊查询 描述: 未改动的文件,不再粘贴出来.项目中SQL的xml映射文件重要标签如下: mapper namespace cache 配置给定命令空间 ...
- MyBatis基础入门《八》查询参数传入Map
MyBatis基础入门<八>查询参数传入Map 描述: 在执行select查询数据的时候,方法传入的参数是java.util.Map类型. 接口方法: xml文件 注意: 书写SQL语句的 ...
- MyBatis基础入门《七》查询参数传入对象
MyBatis基础入门<七>查询参数传入对象 描述: 在执行查询语句的时候,传入的参数是一个对象,依据对象的属性,进行检索数据.此时,书写SQL语句中的条件时,其参数需要和对象中的属性保持 ...
- MyBatis基础入门《五》核心配置文件
MyBatis基础入门<五>核心配置文件 描述: 在前面的章节中,简单的学习使用了一下mybatis,对于配置文件没有过多详细说明. 这里先描述项目中的一个核心配置文件:mybatis-c ...
- MyBatis基础入门《十七》动态SQL
MyBatis基础入门<十七>动态SQL 描述: >> 完成多条件查询等逻辑实现 >> 用于实现动态SQL的元素主要有: > if > trim > ...
- MyBatis基础入门《九》ResultMap自动匹配
MyBatis基础入门<九>ResultMap自动匹配 描述: Mybatis执行select查询后,使用ResultMap接收查询的数据结果. 实体类:TblClient.java 接口 ...
随机推荐
- [No0000E0]批量打开当前路径下的文件
for /r %i in ( *) do start %i
- 生成树协议(STP)
首先了解一下环路问题: 两个交换机将两个局域网同时连接起来的时候,不幸地出现了环路: 这两个交换机还是都能够收到广播包的.交换机 A 一开始是不知道机器 2 在哪个局域网的,所以它会把广播消息放到局域 ...
- 查看dsym的报错信息(友盟)
//搜索显示报错信息的命令在终端直接运行(来源老版提示) export dSYMPath="$(find ~/Library/Developer/Xcode -iname '*.dSYM' ...
- MSSQL数据库优化经验
数据库优化的目标无非是避免磁盘I/O瓶颈.减少CPU利用率和减少资源竞争.1. 在业务密集的SQL当中尽量不采用IN操作符2. 不使用not in 因为它不能应用表的索引.用not exists 或 ...
- adb devices offline的解决办法
手机通过USB线连接电脑后,输入adb devices 识别为 offline,如图: 解决办法如下: (0) 换数据线.换主机后面的USB口先试一下 (1) 重启adb服务 adb kill-ser ...
- commonjs模块和es6模块的区别?
commonjs模块和es6模块最主要的区别:commonjs模块是拷贝,es6模块是引用,但理解这些,先得理解对象复制的问题,在回过头来理解这两模块的区别. 一.基本数据类型的模块 ./a1.js ...
- iptables编写规则
[-t 表名]:该规则所操作的哪个表,可以使用filter.nat等,如果没有指定则默认为filter -A:新增一条规则,到该规则链列表的最后一行 -I:插入一条规则,原本该位置上的规则会往后顺序移 ...
- (4.1)mysql备份还原——mysql常见故障
(4.1)mysql备份还原——mysql常见故障 1.常见故障类型 在数据库环境中,常见故障类型: 语句失败,用户进程失败,用户错误 实例失败,介质故障,网络故障 其中最严重的故障主要是用户错误和介 ...
- SQL专家云监控
SQL专家云监控:http://www.zhuancloud.com/Index.html
- 前端 HTML 标签里 特殊符号
特殊符号 浏览器在显示的时候会移除源代码中多余的空格和空行. 所有连续的空格或空行都会被算作一个空格.需要注意的是,HTML代码中的所有连续的空行(换行)也被显示为一个空格. <!DOCTYPE ...