MyBatis的核心配置

本文详细介绍了MyBatis的两个核心对象:SqlSessionFactory和SqlSession。SqlSessionFactory用于创建SqlSession对象,它是线程安全的,建议使用单例模式创建。SqlSession负责执行SQL语句,提供了selectOne、selectList、insert、update和delete等方法。文章还涵盖了配置文件的各个元素,如properties、settings、typeAliases、environments、mappers,以及映射文件中的各种元素如select、insert、update、delete、sql和resultMap。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MyBatis的核心对象

MyBatis的核心对象有两个:一个是用来创建会话对象的SqlSessionFactory对象,另一个是用来执行SQL语句的SqlSession对象。

SqlSessionFactory对象

SqlSessionFactory对象的主要作用就是用来创建SqlSession对象。通常SqlSessionFactory对象由SqlSessionFactoryBuilder对象来构建

//读取配置文件
InputStream input = Resources.getResourceAsStream("配置文件位置");
//创建SqlSessionFactory对象
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(input);

SqlSessionFactory对象是线程安全的,一旦被创建,整个应用期间都会存在,通常每一个数据库只会对应一个SqlSessionFactory,所以构建对象时建议使用单例模式

SqlSession对象

SqlSession对象,主要作用执行SQL语句,完成持久化操作。底层封装了JDBC连接,所以可以直接使用其实例来执行映射文件中的SQL语句。

	//SqlSessionFactory对象sessionFactory
	//创建SqlSession对象
	SqlSession sqlSession  = sessionFactory.openSession();
	try{
		//此处执行操作
	}finally{
		//及时关闭SqlSession
		sqlSession.close();
	}

SqlSession对象的方法

  1. selectOne(String statement,Object parameter):statement是映射文件中定义的< select>元素的id。parameter是查询需要的参数。返回一条记录的泛型对象
  2. selectList(String statement,Object parameter):返回SQL语句查询结果的泛型对象List集合
  3. insert(String statement,Object parameter):返回执行insert语句影响的记录行数
  4. update(String statement,Object parameter):返回执行update语句影响的记录行数
  5. delete(String statement,Object parameter):返回执行delete语句影响的记录行数
  6. commit():若执行的对表中记录有所更改的语句,需要commit()提交一下事务。
  7. rollback():回滚事务
  8. close():关闭事务

创建SqlSession对象的工具类

  1. 创建配置文件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>
		<!--配置环境,默认环境为mysql-->
 		<environments default="mysql">
 			<!--配置id为mysql的数据库环境-->
 			<environment id="mysql">
 				<!--配置事务管理器-->
 				<transactionManager type="JDBC"/>
 				<!--配置数据源-->
 				<dataSource type="POOLED">
 					<property name="driver" value="com.mysql.jdbc.Driver"/>
 					<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
					<property name="username" value="root"/>
					<property name="password" value="root"/>
 				</dataSource>
 			</environment>
 		</environments>
 		<!--配置映射文件-->
 		<mappers>
 			<mapper resource="org/mybatis/example/BlogMapper.xml"/>
 		</mappers>
	</configuration>
  1. 创建MybatisUtils.java工具类
public class MybatisUtil {
	private static SqlSessionFactory sqlSessionFactory = null;
	static {
		try {
			//加载配置文件
			InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
			//创建SqlSessionFactory对象
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
	public static SqlSession getSqlSession() {
		return sqlSessionFactory.openSession();
	}
}

配置文件

通常一个项目中只需配置一个配置文件,并且默认名为:mybatis-config.xml。而配置文件中的元素大致分为以下几种。

在这里插入图片描述

properties元素

首先这个proerties元素,就是读取配置文件里的变量。将内部配置外在化。

  1. 创建db.properties配置文件
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=root
  1. 在mybaties-config配置设置如下
	<configuration>
		<properties resource="db.properties"/>
		......
		......
		......
		<environments default="mysql">
			<environment id="mysql">
				<dataSource type="pooled">
					<property name="driver" value="${jdbc.driver}"/>
					<property name="url" value="${jdbc.url}"/>
					<property name="username" value="${jdbc.username}"/>
					<property name="password" value="${jdbc.password}"/>
				</dataSource>
			</environment>
		</environments>
		<mappers>
			.....
		</mappers>
	</configuration>

这样就可以实现动态配置

setting元素

setting元素用来改变MyBatis运行时的行为。例如开启二级缓存、开启延迟加载等。

typeAliases元素

typeAliases元素用于为配置文件中的Java类设置一个别名。例如:

	<!--定义别名-->
	<typeAliases>
		<!--
		1. alias表示别名
		2. type表示类名
		3. alias省略则将类名首字母小写,作为别名
		-->
		<typeAlias alias="user" type="com.syl.po.User"/>
	</typeAliases>

所以当配置文件中有再需要类名的时候,就不需要再写长长的类名了,只需选择别名即可。

当POJO类过多时,可以通过自动扫描包的形式自定义别名。

	<typeAliases>
		<!--自动扫描com.syl.po包下的所有类,并设置别名-->
		<package name="com.syl.po"/>
	</typeAliases>

environments元素

environments元素用于对数据源的配置。

	<!--指定默认环境-->
	<environments default="mysql">
			<!--为mysql环境设置数据源-->
			<environment id="mysql">
			<!--指定事务管理器-->
			<transactionManager type="JDBC"/>
				<!--设置数据源-->
				<dataSource type="pooled">
					<property name="driver" value="${jdbc.driver}"/>
					<property name="url" value="${jdbc.url}"/>
					<property name="username" value="${jdbc.username}"/>
					<property name="password" value="${jdbc.password}"/>
				</dataSource>
			</environment>
		</environments>

mappers元素

mappers元素用于指定映射文件的位置。

  1. 使用类路径引入
	<mappers>
		<mapper resource="com/syl/mapper/UserMapper.xml"/>
	</mappers>
  1. 本地文件路径引入
	<mappers>
		<mapper url="file:///D:/.../.../.../UserMapper.xml"/>
	</mappers>
  1. 接口类引入
	<mappers>
		<mapper class="com.syl.mapper.UserMapper"/>
	</mappers>
  1. 包名引入
	<mappers>
		<mapper name="com.syl.mapper.UserMapper.xml"/>
	</mappers>

映射文件

映射文件就是将一个POJO类的属性和数据库表的字段一一对应。一个POJO类对应一个映射文件对应一个数据库表。包含元素如下。mapper为根元素

在这里插入图片描述

select元素

专门用来写查询语句例如:

	<select id="findById" parameterType="Integer"
		resultType="com.syl.po.Customer">
		select * from customer where id=#{id}
	</select>

insert元素

如上类似

update元素

如上类似

delete元素

如上类似

sql元素

SQL中相同的语句单独写出来,在需要的直接引用即可。例如:

	<sql id="customerColumns">
	id,username,jobs,phone
	</sql>
	<select id="findById" parameterType="Integer"
		resultType="com.syl.po.Customer">
		select <include refid="customerColumns"/>
		from customer where id=#{id}
	</select>

resultMap元素

暂不需要,待补充。

@syl 2021/08/09 21:57 周一 晴 29°

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值