mybatis概述
Mybatis特点
a) 开源的优秀持久层框架(轻量级)
b) SQL语句与代码分离
c) 面向配置的编程(程序的可维护性拓展性大大增强)
d) 支持复杂数据映射
e) 动态SQL语句
Mybatis工作流程
流程概述
读取配置文件(数据库连接相关信息)
生成SqlSessionFactory(sqlsession工厂,用于与数据库之间的会话)
建立SqlSession(sqlsession目的是为了执行SQL语句)
调用mybatis API
查询map文件配置
返回结果
关闭sqlsession
配置文件
基本配置文件
一个例子:
<?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="db.properties"/> <!-- 配置实体类别名 --> <typeAliases> <package name="org.demo.domain"/> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <!-- 配置数据库连接信息 --> <dataSource type="POOLED"> <property name="driver" value="${db.driver}" /> <property name="url" value="${db.url}" /> <property name="username" value="${db.user}" /> <property name="password" value="${db.pwd}" /> </dataSource> </environment> </environments> <mappers> <mapper resource="org/demo/mapper/usersMapper.xml"/> <mapper resource="org/demo/mapper/empMapper.xml"/> <!-- <mapper class="org.demo.zjdemo.UsersMapper"/>--> <package name="org.demo.zjdemo"/> </mappers> </configuration>
mybatis配置文件中包含一个大的configuration标签
properties标签:引入数据库连接配置文件
typeAliases:定义Java类别名
包下所有类名作为别名 <package name="包名"/> 单独类定义别名 <typeAlias type="全类名" alias="别名">
environments:mybatis配置环境,可以配置多个环节
mappers:指定映射文件
Map配置文件
SQL 映射XML 文件是所有sql语句放置的地方。需要定义一个workspace,一般定义为对应的接口类的路径。写好SQL语句映射文件后,需要在MyBAtis配置文件mappers标签中引用,例如:
<mappers> <mapper resource="org/demo/mapper/usersMapper.xml"/> <mapper resource="org/demo/mapper/empMapper.xml"/> <!-- <mapper class="org.demo.zjdemo.UsersMapper"/>--> <package name="org.demo.zjdemo"/> </mappers>
SQL 映射XML 文件一些初级的元素:
1. cache – 配置给定模式的缓存
2. cache-ref – 从别的模式中引用一个缓存
3. resultMap – 这是最复杂而却强大的一个元素了,它描述如何从结果集中加载对象
4. sql – 一个可以被其他语句复用的SQL 块
5. insert – 映射INSERT 语句
6. update – 映射UPDATE 语句
7. delete – 映射DELEETE 语句
8. select - 映射SELECT语句
SqlSessionFactory,SqlSession
SqlSessionFactory:代表与数据库之间的连接
SqlSession:进行各种数据库操作,有SqlSessionFactory建立
生命周期:一般的mybatis程序应用只有一个SqlSessionFactory,是程序级的,程序开始运行建立,程序结束消亡。Sqlsession的生命周期是过程级的,例如在某个方法中建立SqlSession对象,方法退出sqlsession消亡,一个程序运行中会创建多个sqlsession。
建立代码:
InputStream input=Demo1Test.class.getClassLoader().getResourceAsStream(resource); SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(input); SqlSession session=sessionFactory.openSession();//openSession(true)可自动提交