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 接口 ...
随机推荐
- sess.run(tf.global_variables_initializer()) 做了什么?
当我们训练自己的神经网络的时候,无一例外的就是都会加上一句 sess.run(tf.global_variables_initializer()) ,这行代码的官方解释是 初始化模型的参数.那么,它到 ...
- hadoop内存配置方案
Configuration File Configuration Setting Value Calculation 8G VM (4G For MR) yarn-site.xml ...
- 理解套接字Socket
Socket 在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用以实现进程在网络中通信. 需要记住的知识点: 监听的 Socket 和真正用来传数据的 So ...
- angular 使用dialog的经验
利用angular在近期的工作中使用了dialog的方式,总结下经验 由于dialog显示的内容不同,需要用到angular 的ng-include加载不同的文件1 dialog利用指令的方式 app ...
- mysql 正确清理binlog 删除数据后磁盘空间的
(3条消息)MySQL删除数据后磁盘空间的释放情况 - ZERO - CSDN博客 https://blog.csdn.net/zero__007/article/details/51404091 m ...
- https://pypi.org/project/py-mysql2pgsql/
https://packages.ubuntu.com/trusty/postgresql-server-dev-9.3 所以使用下面的命令即可安装python-dev: yum install py ...
- Web开发——JavaScript基础
参考学习: MDN JavaScript:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript ECMAScript 6入门(阮一峰):htt ...
- linux之用户和用户组
什么用户组? 具有某种共同特征的用户集合起来.用户组(Group)配置文件主要有 /etc/group和/etc/gshadow,其中/etc/gshadow是/etc/group的加密信息文件. 注 ...
- 获取链接的参数,判断是否是微信打开,ajax获取数据
//获取链接参数function GetQueryString(name) { var reg = new RegExp("(^|&)" + name + " ...
- Python接口自动化【requests处理Token请求】
首先说一下使用python模拟登录或注册时,对于带token的页面怎么登录注册模拟的思路: 1.对于带token的页面,需要先从最开始的页面获取合法token 2.然后使用获取到的合法token进行后 ...