一、Mybatis是什么
MyBatis是个开源的数据持久层框架。它内部封装了通过JDBC访问数据库的操作,支持普通的SOL查询、存储过程和高级映射。MyBatis将程序中的大量sql语句剥离出来,配置在配置文件中,实现了sql的灵活配置。MyBatis是ORM解决方案,在对象模型和关系型数据库表之间建立了桥梁。
二、Mybatis环境搭建
1、第一步导入jar包
2、编写MyBatis核心配置文件:
3、创建实体类:类名不一定要和数据库表名一致,但是类中属性名要和表字段名保持一致
4、创建DAO接口
5、创建sql映射文件:一般与pojo名称+mapper命名
三、MyBatis的核心对象
1、MyBatis的核心对象
(1)SqlSessionFactoryBuilder:所有的MyBatis应用都是以SqlSessionFactory实例为中心。SqlSessionFactoryBuilder就是SqlSessionFactory的构造者,通过build()方法负责构建SqlSessionFactory。其生命周期只存在于方法体内。
(2)SqlSessionFactory:SqlSessionFactory就是创建SqlSession实例的工厂。通过SqlSessionFactory提供的openSession()方法来获取SqlSession实例。生命周期与应用的生命周期相同
(3)SqlSession:SqlSession是用于执行持久化操作的对象,类似于JDBC中的Connection。它提供了面向数据库执行SQL命令所需的所有方法,可以通过SqlSession实例直接运行已映射的SQL语句。对应一次数据库会话,会话结束必须关闭,不能共享
public class MyBatisUtil {
private static SqlSessionFactory sessionFactory;
static {
try {
InputStream inputStream = Resources
.getResourceAsStream("sqlMapConfig.xml");//读取配置文件
//创建SqlSessionFactoryBuilder对象,调用build方法,创建SqlSessionFactory 对象
sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession() {
//通过SqlSessionFactory 对象获得SqlSession 对象,true表示关闭事务控制
return sessionFactory.openSession(true);
}
}
2、mybatis-config.xml 系统核心配置文件
(1)configuration 配置
(2)properties : 可以配置在Java 属性配置文件中 ;有两种配置方式:
- 通过外部指定的方式(database.properties),实现动态配置:resource属性值的优先级高于property子节点配置的值
<properties resource="database.properties"/> // resource指定外部数据源
//通过${属性名}获得属性值
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${user}"/>
<property name="password" value="${password}"/>
</dataSource>
- 直接配置为xml,实现动态配置
<properties> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://127.0.0.1:3306/smbms"/> <property name="user" value="root"/> <property name="password" value="root"/> </properties> ...... <dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${user}"/> <property name="password" value="${password}"/> </dataSource>
(3)settings : 修改 MyBatis 在运行时的行为方式
(4)typeAliases: 为 Java 类型命名一个别名(简称),仅仅只关联XML配置,简写冗长的Java类名
//指定类的简称
<typeAliases>
<typeAlias alias="User" type="cn.smbms.pojo.User"/>
</typeAliases>
//指定包下JavaBean的简称
<typeAliases>
<package name ="cn.smbms.pojo" />
</typeAliases>
(5)typeHandlers: 类型处理器
(6)objectFactory: 对象工厂
(7)plugins: 插件
(8)environments: 表示配置MyBatis的多套运行环境,将SQL映射到多个不同的数据库上;
子元素节点:environment,但是必须指定其中一个为默认运行环境(通过default指定)
<!-- 配置数据源,事务 -->
<environments default="deploy">
<environment id="deploy">
<!-- 事务:JDBC/MANAGED-自己管理去 -->
<transactionManager type="JDBC" />
<!-- 数据源:POOLED/UNPOOLED/JNDI -->
<dataSource type="POOLED">
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${uName}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
(10)mappers : 映射器,定义SQL映射语句
<!-- 将mapper映射文件加入到系统核心配置文件中 -->
<mappers>
<mapper resource="cn/smbms/dao/user/UserMapper.xml"/>
</mappers>
3、mapper.xml SQL映射文件
,常用元素如下:
(1)mapper: 映射文件的根元素节点,只有一个属性
(2)namspacc: namespace和子元素的id联合保证唯一,区别不同的mapper,namespace的命名必须跟某个接口同名
(3)selet: 表示查询语句,是MyBatis最常用的元素之一, 常用属性如下。
(4)id属性:该命名空间下唯一标识符。接口中的方法与映射文件中的SQL语句id一一对应
(5)resultType 属性:表示SQL语句返回值类型
(6)parameterType:传入SQL语句的参数类型