MyBatis基础入门《三》Select查询集合
描述:
代码新增了一个MybatisUtil工具类,查询数据库返回集合的时候,接收数据的三种方式。由于代码会渐渐增多,未涉及改动过的文件不再粘贴出来。
项目结构:
ClientMapper.xml
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE mapper
3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
5
6 <mapper namespace="com.charles.dao.ClientMapper">
7
8 <resultMap type="com.charles.entity.TblClient" id="tblClientID">
9 <id property="cid" column="id" />
10 <result property="cname" column="client_name"/>
11 <result property="caddress" column="client_address"/>
12 <result property="cbirthday" column="client_birthday"/>
13 </resultMap>
14
15 <!-- 查询数据库 -->
16 <select id="getCount" resultType="int">
17 SELECT COUNT(*) FROM tbl_client
18 </select>
19
20 <!--
21 #########################################################################################################
22 实体类:TbClient.java 中的属性和数据库中表字段的属性不一样,所以需要进行手动配置映射关系。
23
24 如果实体类:TbClient.java中的属性和数据库中表字段的属性是一样的,那就不需要进行配置了,
25 执行使用 resultType="com.charles.entity.TbClient"即可,有点类似方式二,从数据库中查询出来的列名刚好就是
26 实体类TbClient.java中的属性名
27 #########################################################################################################
28 -->
29
30 <!--
31 查询所有的用户. 方式1
32 使用此方式需要使用resultMap标签进行定义实体类属性和数据库中表字段之间的映射关系。
33 -->
34 <!-- <select id="getClientAll" resultMap="tblClientID"> -->
35 <!-- SELECT * FROM tbl_client -->
36 <!-- </select> -->
37
38
39 <!-- 查询所有的用户. 方式2 -->
40 <!-- <select id="getClientAll" resultType="com.charles.entity.TblClient"> -->
41 <!-- SELECT -->
42 <!-- id as cid, -->
43 <!-- client_name as cname, -->
44 <!-- client_address as caddress, -->
45 <!-- client_birthday as cbirthday -->
46 <!-- FROM tbl_client -->
47 <!-- </select> -->
48
49 <!--
50 查询所有的用户. 方式3
51 使用此方式需注意两点:
52 1. 需要在 mybatis-config.xml文件中,配置别名baitang
53 2. SQL 语句需要使用别名 对应 实体类TbClient.java 中的属性名
54 -->
55 <select id="getClientAll" resultType="baitang">
56 SELECT
57 id as cid,
58 client_name as cname,
59 client_address as caddress,
60 client_birthday as cbirthday
61 FROM tbl_client
62 </select>
63
64 </mapper>
注意:
>>方式1:
resultMap 自动映射匹配前提:字段名和属性名必须一致。
resultMap的自动映射级别-autoMappingBehavior
PARATIAL(默认):自动匹配所有
resultMap使用场景:
>>> 数据库自动信息与对象属性不一致。
>>> 复杂的联合查询,自由控制映射结果
MyBatisUtil.java
1 package com.charles.util;
2
3 import java.io.IOException;
4 import java.io.InputStream;
5
6 import org.apache.ibatis.io.Resources;
7 import org.apache.ibatis.session.SqlSession;
8 import org.apache.ibatis.session.SqlSessionFactory;
9 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
10
11 public class MyBatisUtil {
12
13 private static SqlSessionFactory factory = null;
14
15 /** 在静态代码块下,factory只会被创建一次 **/
16 static {
17 try {
18 InputStream inputStream = Resources.getResourceAsStream("mybatis/mybatis-config.xml");
19 factory = new SqlSessionFactoryBuilder().build(inputStream);
20 } catch (IOException e) {
21 e.printStackTrace();
22 }
23 }
24
25 /**
26 * 获取SQLSession方法
27 *
28 * @return SQLSession
29 **/
30 public static SqlSession getSqlSession() {
31
32 // 开启事物
33 return factory.openSession(false);
34 }
35
36 /**
37 * 关闭SQLSession方法
38 *
39 * @param SQLSession对象
40 */
41 public static void closeSqlSession(SqlSession sqlSession) {
42
43 if (sqlSession != null) {
44 sqlSession.close();
45 }
46 }
47 }
mybatis-config.xml
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE configuration
3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
4 "http://mybatis.org/dtd/mybatis-3-config.dtd">
5
6 <configuration>
7
8 <!--
9 注意:
10 这个配置文件的标签是有顺序的,必须按照这个顺序书写。
11 例如:settings标签就必须放在properties标签的后面。
12 -->
13
14 <!-- 引入database.properties文件 -->
15 <properties resource="properties/database.properties"></properties>
16
17 <!-- 配置mybatis的log实现log4j -->
18 <settings>
19 <setting name="logImpl" value="STDOUT_LOGGING" />
20 </settings>
21
22 <!-- 配置别名 -->
23 <typeAliases>
24 <typeAlias type="com.charles.entity.TblClient" alias="baitang"/>
25 </typeAliases>
26
27 <!-- 配置Mybatis的环境 -->
28 <environments default="development">
29 <environment id="development">
30 <!-- 配置事物管理 -->
31 <transactionManager type="JDBC" />
32 <dataSource type="POOLED">
33 <property name="driver" value="${jdbc.driver}" />
34 <property name="url" value="${jdbc.url}" />
35 <property name="username" value="${jdbc.username}" />
36 <property name="password" value="${jdbc.password}" />
37 </dataSource>
38 </environment>
39 </environments>
40
41 <!-- 将Mapper文件加入到mybatis的配置文件中 -->
42 <mappers>
43 <mapper resource="com/charles/dao/ClientMapper.xml" />
44 </mappers>
45
46
47 </configuration>
JunitMybatisUtil.java
1 package com.charles.junit;
2
3 import java.util.List;
4
5 import org.apache.ibatis.session.SqlSession;
6 import org.junit.Test;
7
8 import com.charles.entity.TblClient;
9 import com.charles.util.MyBatisUtil;
10
11 public class JunitMybatisUtil {
12
13 @Test
14 public void junitUnit() {
15
16 /** 1. 获取SQLSession **/
17 SqlSession session = MyBatisUtil.getSqlSession();
18
19 /** 2. 调度方法,从数据库中获取数据 **/
20 String resource = "com.charles.dao.ClientMapper.getClientAll";
21 List<TblClient> list = session.selectList(resource);
22
23 /** 3. 关闭SQLSession **/
24 MyBatisUtil.closeSqlSession(session);
25
26 for(TblClient client : list ) {
27 System.out.println(client.getCid() + "\t" + client.getCname() + "\t" + client.getCaddress() + "\t" + client.getCbirthday());
28 }
29 }
30 }
如有问题,欢迎纠正!!!
如有转载,请标明源处:https://www.cnblogs.com/Charles-Yuan/p/9861513.html
版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: