zoukankan      html  css  js  c++  java
  • 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>

       注意:

       >>方式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() + "	" + client.getCname() + "	" + client.getCaddress() + "	" + client.getCbirthday());
    28         }
    29     }
    30 }

    如有问题,欢迎纠正!!!

    如有转载,请标明源处:https://www.cnblogs.com/Charles-Yuan/p/9861513.html

  • 相关阅读:
    windows下安装mysql教程
    python生成器实现杨辉三角
    python默认参数问题
    python中判断素数的函数
    extract()和extact_first()的区别
    硬连接和软连接的区别
    du与df的区别
    命题逻辑
    关于 better-scroll 设置了以后无法滚动或不生效的问题
    Maven *IDEA*
  • 原文地址:https://www.cnblogs.com/Charles-Yuan/p/9861513.html
Copyright © 2011-2022 走看看