MyBatis基础入门《三》Select查询集合

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>

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

猜你喜欢

转载自www.cnblogs.com/Charles-Yuan/p/9861513.html