为了简便的去调用接口中的方法,简化生成接口代理对象的过程,即将每次调用时省略如下部分代码
我们创建一个MyBatisUtil类将上述代码进行集中处理,不用每次调用一个接口中的方法就去调用,直接调用数据库连接池,将生成数据库连接池过程进行集中,下面是示例代码
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 java.io.IOException;
import java.io.InputStream;
public class MyBatisUtil {
static SqlSessionFactory sqlSessionFactory=null;
static {
InputStream inputStream= null;
try {
inputStream = Resources.getResourceAsStream("mybitsConfig.xml");
} catch (IOException e) {
e.printStackTrace();
}
sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
}
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
//类似一个仓库,仓库里面有很多SqlSession对象,每次都不同,取出的对象
}
}
然后我们在调用该类进行生成数据库连接池,并通过该类中方法进行调用处理,下面为调用示例
public void ff1(){ //单个参数查询
SqlSession sqlSession = MyBatisUtil.getSqlSession();
//动态为接口生成一个代理对象,由代理对象去调用方法
AdminDao adminDao=sqlSession.getMapper(AdminDao.class);
Admin admin=adminDao.findadminByid(1);
System.out.println(admin.toString());
sqlSession .close();
}
对于使用Mybatis,我们需要进行对于环境的配置,如下为配置文件。
1.在开启数据库连接池功能后,不在需要进行一次使用连接就创建一个连接对象,而是在连接池中 会一开始便创建的有值,在调用时将连接对象分配给需要使用的,且使用完后不需要将其销毁,而是重新将其放回到连接池中。
2.对单个类或者指定包中的类进行别名配置。
3.开启日志功能后,会将执行的sql语句进行步骤的详细的过程打印出来
4.事务只与增删改有关,与查询无关
<?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="config.properties"></properties>
<settings>
<!-- 日志-->
<setting name="logImpl" value="STDOUT_LOGGING"/>
<!-- 从经典的数据库命名,开启驼峰命名转换-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!-- <setting name="autoMappingBehavior" value="FULL"/>-->
</settings>
<!--配置类型别名-->
<typeAliases>
<!-- 单个 <typeAlias type="com.ffyc.mybatisdemo.model.Admin" alias="Admin"></typeAlias>-->
<!-- --> <package name="com.ffyc.mybatisdemo.model"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<!-- 使用事务管理的jdbc默认的 事务是一次对数据操作过程的管理,具有原子性 -->
<dataSource type="POOLED">
<!-- 是否使用数据库连接池功能 当为UNPOOLED不使用-->
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
<!-- <environment id="work">-->
<!-- <transactionManager type=""/>-->
<!-- <dataSource type="">-->
<!-- </dataSource>-->
<!-- </environment>-->
</environments>
<!-- 添加映射关系的配置文件 -->
<mappers>
<mapper resource="mappers/AdminMapper.xml"/>
<mapper resource="mappers/StudentMapper.xml"/>
<mapper resource="mappers/GradeMapper.xml"/>
</mappers>
</configuration>
5.将属性抽取出来构成一个属性文件
6.添加映射的关系文件,使得可以进行调用
SQLSessionFactory与Session的关系