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() + "\t" + client.getCname() + "\t" + client.getCaddress() + "\t" + client.getCbirthday()); 28 } 29 } 30 }
如有问题,欢迎纠正!!!
如有转载,请标明源处:https://www.cnblogs.com/Charles-Yuan/p/9861513.html
若现在就觉得失望无力,未来那么远你该怎么扛 —— 致自己