今天我们来看看ssm框架中的mybatis。
Mybatis定义
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。 简单来说就是操作数据库进行CRUD的操作,简化了JBDC代码
1.Mybatis的核心配置文件
perproties
<properties resource="db.properties" >
</properties>
可以连接外部的资源文件,也可以在property中配置属性
setting
<settings>
<!--设置开启日志输出-->
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
用来设置一些配置 比如日志,驼峰命名规则
typeAliases
<!--可以给实体类设置别名,在程序中只需要写别名就好-->
<typeAliases>
<typeAlias type="com.zhang.pojo.User" alias="User"/>
</typeAliases>
environments
<!--环境配置-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
表明我们连接的事务管理JDBC,下面的属性property来自我们的perproties中连接的db.properties配置文件
mappers
<!--每一个Mapper.xml都需要在Mybatis核心配置文件中注册!-->
<mappers>
<mapper class="com.zhang.Dao.UserMapper"/>
</mappers>
2.Mapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zhang.Dao.UserMapper">
<!--select查询语句-->
<select id="getListUser" resultType="User">
select * from mybatis.mybatis
</select>
</mapper>
<!--namespace(命名空间) = 绑定一个对应的Dao/Mapper接口 需要写全限定名-->
<!--id用来绑定接口中的方法名称-->
<!--resultType:返回值类型-->
中间就是sql语句
3.sqlSessionFactory & sqlSession
//sqlSessionFactory --> sqlSession
public class MybatisUtil{
private static SqlSessionFactory sqlSessionFactory;
static {
try {
//使用mybatis的第一步,获取到sqlSessionFactory对象
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。
// SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。
// 你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
}
这是我们的一个工具类用来生产可以执行SQL的sqlSession
1.通过Resources.getResourceAsStream(resource)将mybatis的核心配置文件读进来
2.SqlSessionFactoryBuilder().build(inputStream)生产出sqlSessionFactory
3.通过sqlSessionfactory的openSession()得到可以执行sql的sqlSession