·MyBatis前身是iBatis,本是Apache的一个开源的项目mysql
·ORM框架git
·实体类和SQL语句之间创建映射关系github
·基于SQL语法,简单易学sql
·能了解底层封装过程数据库
·SQL语句封装在配置文件中,便于统一管理与维护,下降程序的耦合度编程
·方便程序代码调试缓存
1.下载mybatis-3.2.2.jar包并导入工程session
2.编写MyBatis核心配置文件(configuration.xml)mybatis
3.建立实体类-POJOapp
4.DAO层-SQL映射文件(mapper.xml)
5.建立测试类
读取核心配置文件mybatis-config.xml
建立SqlSessionFactory对象,读取配置文件
建立SqlSession对象
调用mapper文件进行数据操做
·与JDBC相比,减小了50%以上的代码量
·最简单的持久化框架,小巧并简单易学
·SQL代码从程序代码中完全分离,可重用
·提供XML标签,支持编写动态SQL
·提供映射标签,支持对象与数据库的ORM字段映射
·SQL语句编写工做量大,对开发人员有必定要求
·数据库移植性差
·MyBatis的核心对象
SqlSessionFactoryBuilder
SqlSessionFactory
SqlSession
·mybatis-config.xml 系统核心配置文件
·mapper.xml SQL映射文件
·用过即丢,其生命周期只存在于方法体内
·可重用其来建立多个 SqlSessionFactory 实例
·负责构建SqlSessionFactory,并提供多个build方法的重载
·读取XML文件构造方式:
String resource = "mybatis-config.xml";
InputStream is = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
·SqlSessionFactory是每一个MyBatis应用的核心
·做用:建立SqlSession实例
SqlSession session = sqlSessionFactory.openSession(boolean autoCommit);
·做用域:Application
·生命周期与应用的生命周期相同
·单例
存在于整个应用运行时,而且同时只存在一个对象实例
·包含了执行SQL所需的全部方法
·对应一次数据库会话,会话结束必须关闭
·线程级别,不能共享
SqlSession session = sqlSessionFactory.openSession();
try {
// do work
} finally {
session.close();
}
注意 在SqlSession里能够执行屡次SQL语句,但一旦关闭了SqlSession就须要从新建立
String resource = "mybatis-config.xml";
InputStream is = Resources.getResourceAsStream(resource);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is) ;
SqlSession sqlSession = factory.openSession();
·经过SqlSession实例直接运行映射的SQL语句
·基于Mapper接口方式操做数据
·configuration 配置
·properties 能够配置在Java 属性配置文件中
·settings 修改 MyBatis 在运行时的行为方式
·typeAliases 为 Java 类型命名一个别名(简称)
·typeHandlers 类型处理器
·objectFactory 对象工厂
·plugins 插件
·environments 环境
·environment 环境变量
·transactionManager 事务管理器
·dataSource 数据源
·mappers 映射器
注意元素节点的顺序!
<?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">
<!--根节点,XMl只能有一个-->
<configuration>
<settings>
<!--二级缓存-->
<setting name="cacheEnabled" value="true"/>
</settings>
<!--一个environments有N个environment-->
<typeAliases>
<package name="cn.bdqn.entity"></package>
</typeAliases>
<environments default="development">
<environment id="development">
<!--
transactionManager:JDBC保证事务的
update
delete
事务分类:JDBC:编程式事务
xxx.beginTransaction()
tx.commit()
tx.rollback()
配置式事务
JDBC|MANAGED
区别
-->
<transactionManager type="JDBC"></transactionManager>
<!--
POOLED:MyBatis内置的链接池
c3p0链接池
POOLED 、UNPOOLED 、JNDI
-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql:///blog"/>
<property name="username" value="root"/>
<property name="password" value="1234"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- <package name="cn.bdqn.dao"></package>-->
<mapper resource="cn/bdqn/dao/DeptMappr.xml"></mapper>
<mapper resource="cn/bdqn/dao/Ibndao.xml"></mapper>
<mapper resource="cn/bdqn/dao/IEmpDAO.xml"></mapper>
<mapper resource="cn/bdqn/dao/ICategoryDAO.xml"></mapper>
<mapper resource="cn/bdqn/dao/ITeacher.xml"></mapper>
</mappers>
</configuration>
<?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">
<!--namespace:
命名空间:区分不一样空间下的同名SQLID
A: findlAll
B: findAll
-->
<mapper namespace="cn.bdqn.dao.IDeptDao">
<cache/>
<!--SQL标签
id:惟一锁定到SQL标识
paramenterType:SQL语句的入参 能够省略
resultType:
增删除操做:不能 写
查询:单个实体的类型
-->
<sql id="aa">
blogId,blogAuthor,blogAddress,blogDel
</sql>
<resultMap id="DeptMap" type="Dept">
<!--<result column="BlogAuthorr" property="blogAuthor"/>-->
</resultMap>
<!--查询全部-->
<select id="getAll" resultMap="DeptMap">
/*SQL文:SQL语句*/
SELECT <include refid="aa"></include>FROM bloginfo
</select>
</mapper>
https://github.com/qjtlovezch/Y2165/tree/master/_02MyBatis