J2EE系列之MyBatis学习笔记(二)-- mybatis配置

上一节博客里面介绍了MyBatis的简单应用实例。这一篇博客讲以一下mybatis配置文件中各个标签的意义。

上一节实例的mybatis配置文件mybatis-config.xml为:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<properties resource="jdbc.properties"/>
	<typeAliases>
		<typeAlias alias="Student" type="com.test.model.Student"/>
	</typeAliases>
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.driverClassName}" />
				<property name="url" value="${jdbc.url}" />
				<property name="username" value="${jdbc.username}" />
				<property name="password" value="${jdbc.password}" />
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<mapper resource="com/test/mappers/StudentMapper.xml" />
	</mappers>
</configuration>

这里对各个标签进行说明:

1.<environments>标签:这个标签用来配置工程的环境。这个标签中使用<environment>标签来定义各种环境,上面的配置文件中只定义了一个开发环境,并指定了当前工程使用这个环境。下面我们在定义一个测试环境,并指定工程使用这个测试环境:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<properties resource="jdbc.properties"/>
	<typeAliases>
		<typeAlias alias="Student" type="com.test.model.Student"/>
	</typeAliases>
	<environments default="test">
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.driverClassName}" />
				<property name="url" value="${jdbc.url}" />
				<property name="username" value="${jdbc.username}" />
				<property name="password" value="${jdbc.password}" />
			</dataSource>
		</environment>
		<environment id="test">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.driverClassName}" />
				<property name="url" value="${jdbc.url}" />
				<property name="username" value="${jdbc.username}" />
				<property name="password" value="${jdbc.password}" />
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<mapper resource="com/test/mappers/StudentMapper.xml" />
	</mappers>
</configuration>
这里在<environments>标签中又使用<environment>定义了一个环境,取id为test,并指定了当前工程使用test环境(<environments>标签的default属性指定使用哪个环境)。这两个环境中的配置可以是不同的(我们这里直接进行了复制,定义的是相同的)。在一正规的企业,开发工程的时候可能会定义多个环境,比如说定义一个开发环境,开发环境使用mysql数据库,定义一个正式环境,当正式发布的时候使用,正式环境使用oracle数据库。这里定义多个环境,并可以设定当前工程使用哪个环境目的是为了能够更好的开发。

2.<transactionManager />标签定义事务管理器,这个标签中type属性的取值有JDBC和MANAGED(托管)两种。其中:

JDBC:应用程序负责管理数据库连接的生命周期;
MANAGED : 由应用服务器负责管理数据库连接的生命周期; ( tomcat这种免费的服务器是没有这种功能的,一般商业服务器才有此功能, 如JBOSS,WebLogic)

3.<dataSource>标签,用来配置数据源,也就是配置数据库连接。这个标签的type属性有三种取值,分别为:

UNPOOLED:没有连接池,每次数据库操作,MyBatis 都会创建一个新的连接,用完后,关闭;适合小并发项目;
POOLED:用上了连接池,mybatis一开始就创建多个连接,当需要的时候就取出一个连接,不需要的时候放回连接池;
JNDI:使用应用服务器配置JNDI 数据源获取数据库连接;

4.<properties/>标签,用来配置数据库连接的各种属性值。上面的配置中通过resource属性引入了一个配置文件,把各个属性值都写在了这个配置文件中。这种引入配置文件的方式比较方便好用。当然也可以不使用配置文件这种方式,而是直接配置。直接配置为:

<properties>
		<property name="jdbc.driverClassName" value="com.mysql.jdbc.Driver"/>
		<property name="jdbc.url" value="jdbc:mysql://localhost:3306/db_mybatis"/>
		<property name="jdbc.username" value="root"/>
		<property name="jdbc.password" value="123456"/>
	</properties>

以后的时候还是使用引入配置文件的配置方法。

5.<typeAliases>标签,用来给要存入数据库的类取别名。上面的配置文件中给com.test.model.Student这个类取别名为Student,以后工程中用到com.test.model.Student这个类的时候,直接使用它的别名Student即可。上一个博客中实例中的StudentMapper.xml文件中就使用了这个别名:

<mapper namespace="com.test.mappers.StudentMapper">

	<insert id="add" parameterType="Student"  >
		insert into t_student values(null,#{name},#{age})
	</insert>

</mapper> 

在这里定义输入参数类型的时候就使用了定义的别名Student。如果不定义别名的话,这里要写这个类的全名。


上面定义别名的方式(<typeAlias alias="Student" type="com.test.model.Student"/>)并不是最好的,因为如果有100多个类的话,需要写100多条定义语句,这样太麻烦了,可以使用一下方式:

<typeAliases>
		<package name="com.test.model"/>
	</typeAliases>

这种方式是把包com.test.model下所有的类都取别名,别名默认是类名(第一种方式的别名可以随意取,但是这种方式的别名是有规律的,用类名充当别名)。以后开发的时候都使用这种取别名的方式。

6.<mappers>标签,引入映射文件。这里使用了<mapper resource="com/test/mappers/StudentMapper.xml" />这种方式来引入映射文件,resource属性的值就是映射文件的名字。还可以使用以下方式引入映射文件:

<mappers>
		<mapper class="com.test.mappers.StudentMapper"/>
	</mappers>

这里是使用了class属性,这个属性的值是映射的类名。

以上两种方式都不是最好的,理由同上,如果有100多个类的话,要写100多条这样的语句。这样太麻烦。可以使用以下的方式:

<mappers>
		<package name="com.test.mappers"/>
	</mappers>

这种方式的把这个包下面的所有映射文件都引入。

7.配置log4j日志:

之前讲Hibernate的时候讲过log4j日志,这里就不再介绍log4j了,而是直接给出配置方法。

7.1工程的src目录中新建log4j配置文件log4j.properties:

log4j.rootLogger=info,appender1,appender2

log4j.appender.appender1=org.apache.log4j.ConsoleAppender 

log4j.appender.appender2=org.apache.log4j.FileAppender 
log4j.appender.appender2.File=C:/logFile.txt
 
log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout
log4j.appender.appender2.layout=org.apache.log4j.TTCCLayout  
按照之前学习的知道这个配置的意义:定义了输出日志的级别是info级别,日志输出到appender1和appender2中,其中appender1是控制台,appender2是文件,appender2的文件是C盘下的logFile.txt文件。最后两句定义了输出日志的格式。

7.2把log4j的jar包添加到工程中。

完成7.1和7.2之后就可以使用log4j了。修改上一节博客中的测试方法为:

package com.test.service;

import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;

import com.test.mappers.StudentMapper;
import com.test.model.Student;
import com.test.util.SqlSessionFactoryUtil;

public class StudentTest {

	private static Logger logger = Logger.getLogger(StudentTest.class);
	public static void main(String[] args) {
		SqlSession sqlSession = SqlSessionFactoryUtil.openSession();
		StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
		Student student = new Student("李四",11);
		int result = studentMapper.add(student);
		sqlSession.commit();
		if(result > 0){
			logger.info("添加成功");
		}
	}
}

这里使用log4j来输出信息。运行程序:



控制台输出格式如上。根据配置在C盘会新建一个logFile.txt文件,也会把这个语句输出到这个文件中。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值