Myeclipse 配置 Mybatis 框架 jar 包操作(2),测试类升级及 mybatis-config.xml 核心文件配置


注:【网页版】右上方的悬浮框( 有目录索引 )
上一篇章:Myeclipse 配置 Mybatis 框架 jar 包操作


一、优化代码

1-1】旧代码

import static org.junit.Assert.*;

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;
import org.apache.log4j.Logger;
import org.junit.Before;
import org.junit.Test;

public class UserMapperTest {
	
	private Logger logger = Logger.getLogger(UserMapperTest.class);
	
	@Before
	public void setUp() throws Exception {
	}

	@Test
	public void test() {
	
		String resource = "mybatis-config.xml";
		int count = 0;
		SqlSession sqlSession = null;
		
		try {
			InputStream is = Resources.getResourceAsStream(resource);
			SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
			
			sqlSession = factory.openSession();
			
			count = sqlSession.selectOne("cn.smbms.dao.user.UserMapper.count");
			logger.debug("UserMapperTest count---> " + count);
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			sqlSession.close();
		}
	}

}

1-2】创建工具类:MyBatisUtil

/* 创建工具类:MyBatisUtil.class */
/* 用于 创建、关闭 sqlSession 对象 */

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;
	
//	在静态代码块下, Factory 只会被创建一次
	static{
		try {
			InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
			factory = new SqlSessionFactoryBuilder().build(is);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public static SqlSession createSqlSession(){
		// 参数:false 为关闭自动提交事务
		return factory.openSession(false);
	}
	
	public static void closeSqlSession(SqlSession sqlSession){
		if(null != sqlSession) 
			sqlSession.close();
	}
}

1-3】测试类(两种方式调用查询方法)

import static org.junit.Assert.*;
import java.util.ArrayList;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;
import org.junit.Before;
import org.junit.Test;
import cn.smbms.pojo.User;
import cn.smbms.utils.MyBatisUtil;

public class UserMapperTest {
	
	private Logger logger = Logger.getLogger(UserMapperTest.class);
	
	@Before
	public void setUp() throws Exception {
	}

	@Test
	public void testCount() {
		SqlSession sqlSession = null;
		int count = 0;
		try {
			sqlSession = MyBatisUtil.createSqlSession();
			
			//第一种方式:调用selectOne方法执行查询操作
			//count = sqlSession.selectOne("cn.smbms.dao.user.UserMapper.count");
			
			//第二种方式:调用getMapper(Mapper.class)执行dao接口方法来实现对数据库的查询操作
			count = sqlSession.getMapper(UserMapper.class).count();
			
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			MyBatisUtil.closeSqlSession(sqlSession);
		}

		logger.debug("UserDaoTest count---> " + count);
	}
	
}

二、系统核心配置文件(mybatis-config.xml)

<!-- 
	注意:元素节点的顺序
	技巧:切换至 Design  鼠标右键 configuration 选择 Add Child
-- >
<configuration>	配置
	<properties>	可以配置在 Java 属性配置文件中
	<settings>		修改 MyBatis 在运行时的行为方式
	<typeAliases>	为 Java 类型命名一个别名(简称)
	<typeHandlers>	类型处理器
	<objectFacotry>	对象工厂
	<plugins>		插件
	<environments>	环境
	<environment>	环境变量
		<transactionManager>	事务管理器
		<dataSource>	数据源
	<mappers>	映射器

2-1】properties 标签:两种方式

通过外部指定的方式 database.properties,实现动态配置 直接配置为 XML,实现动态配置
在这里插入图片描述 在这里插入图片描述
	<!-- 
		方式一:
		引入 database.properties 文件
		<properties resource="database.properties"/>
	-->
	
	<!-- 
		如何使用此行 <properties resources="database.properties"> 
		resource 优先级更高
		(resource 中同名属性会覆盖 properties 中的值)
		方式二:
	-->
	<properties>
		<property name="driver" value="com.mysql.jdbc.Driver"/>
		<property name="url" value="jdbc:mysql://127.0.0.1:3306/smbms"/>
		<property name="user" value="root"/>
		<property name="password" value="root"/>
    </properties>
    ......
   	<environments default="development">
		<environment id="development">
			<!--配置事务管理,采用JDBC的事务管理  -->
			<transactionManager type="JDBC"></transactionManager>
			<!-- POOLED:mybatis自带的数据源,JNDI:基于tomcat的数据源 -->
			<dataSource type="POOLED">
				<property name="driver" value="${driver}"/>
				<property name="url" value="${url}"/>
				<property name="username" value="${user}"/>
				<property name="password" value="${password}"/>
			</dataSource>
		</environment>
	</environments>

2-2】settings 标签

	<!--
		目的:有所了解
		用来修改 Mybatis 运行时的行为方式
		主要是 MyBatis 的一些全局配置属性的设置
		chcheEnabled:对在些配置文件下的所有 catche 进行全局性 开/关 设置(true|false,默认 true)
		autoMappingBehavior:MyBatis 对于 resultMap 自动映射匹配级别(NONE|PARITAL|FULL,默认PARTIAL)
	-->
	<settings>
		<setting name="logImpl" value="LOG4J" />
		<!-- 是否启用延迟加载:(false 表示所有相关联的都会被初始化加载) -->
		<setting name="lazyLoadingEnabled" value="false" />
	</settings>

2-3】typeAliases 标签

	<!-- 
		类型别名
		仅仅只关联 XML 配置,简写冗餘的 Java 类名
	 -->
	<typeAliases>
		<!-- <typeAlias alias="User" type="cn.smbms.pojo.User"/> -->
	 	<!-- 
	 		上行注释代码 可将【resultType】中的值可以换成 “User”
				<select id="getUserList" resultType="cn.smbms.pojo.User">
					select * from smbms_user
				</select>
			可换为
				<select id="getUserList" resultType="User">
			但类太多配置依旧麻烦,所以使用下面这条语句,效果同上
 		-->
	 	<package name="cn.smbms.pojo"/>
	</typeAliases>

2-4】environments 标签

	<!--
		表示配置 MyBatis 的多套运行环境,将 SQL 映射到多个不同的数据库上
		子元素节点:environment,但是必须指定若一个默认运行环境(通过 default 指定)
	-->
	<environments default="development">	<!-- default:默认的运行环境 ID -->
		<environment id="development">	<!-- id:运行环境 ID -->
		
			<!-- 事务管理器配置 type="[JDBC|MANAGED(托管)]" -->
			<transactionManager type="JDBC"/>	
			<!--
				dataSource 元素使用基本的 DJBC 数据源接口来配置 JDBC 连接对象的资源
				有三种内建的数据源类型
				<dataSource type="[UNPOOLED|POOLED|JNDI]">
				POOLED:MyBatis 实现的简单的数据源连接池的类型,即连接可以被复用
			-->
			
			<dataSource type="POOLED">
				<property name="driver" value="${driver}"/>
				<property name="url" value="${url}"/>
				<property name="username" value="${user}"/>
				<property name="password" value="${password}"/>
			</dataSource>
		</environment>
		<environment id="test">
			......
		</environment>
	</environments>

2-5】mappers 标签

	<!-- 
		映射器,定义 SQL 映射语句
		必须在配置中引用 mapper 映射文件
	-->
	<mappers>
		<!-- 方式一:使用类资源路径获取资源 -->
		<mapper resource="cn/smbms/dao/user/UserMapper.xml"/>
		<!-- 方式二:使用 URL 获取资源(即可以把 sql 映射文件,放至其它路径) -->
		<mapper url="file:///D:/UserMapper.xml" />
		<!-- 注解方式下,使用 -->
        <mapper class="cn.kgc.mapper.EmpMapperAnnotaticon" />
	</mappers>

猜你喜欢

转载自blog.csdn.net/ice_debj/article/details/104714788