MyBatis的核心配置
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对象的方法
- selectOne(String statement,Object parameter):statement是映射文件中定义的< select>元素的id。parameter是查询需要的参数。返回一条记录的泛型对象。
- selectList(String statement,Object parameter):返回SQL语句查询结果的泛型对象List集合
- insert(String statement,Object parameter):返回执行insert语句影响的记录行数
- update(String statement,Object parameter):返回执行update语句影响的记录行数
- delete(String statement,Object parameter):返回执行delete语句影响的记录行数
- commit():若执行的对表中记录有所更改的语句,需要commit()提交一下事务。
- rollback():回滚事务
- close():关闭事务
创建SqlSession对象的工具类
- 创建配置文件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>
- 创建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元素,就是读取配置文件里的变量。将内部配置外在化。
- 创建db.properties配置文件
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=root
- 在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元素用于指定映射文件的位置。
- 使用类路径引入
<mappers>
<mapper resource="com/syl/mapper/UserMapper.xml"/>
</mappers>
- 本地文件路径引入
<mappers>
<mapper url="file:///D:/.../.../.../UserMapper.xml"/>
</mappers>
- 接口类引入
<mappers>
<mapper class="com.syl.mapper.UserMapper"/>
</mappers>
- 包名引入
<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°