02. Mybatis 框架简介和安装配置
1、什么是框架?
它是我们软件开发的一套解决方案,不同的框架解决不同的问题。
使用框架的好处:
框架封装了很多细节,使开发者可以使用几件极简的方式实现功能,大大提高了开发效率。
框架阶段:
ssm框架:
- mybatis 对jdbc进行封装(DAO 输出访问层 数据持久层)
- spring 全局项目管理
- springMVC 对servlet进行封装(业务层)
前端框架:
- layUI
- Bootstrap
快速搭建项目
- springBoot
- 前后端分离开发模式
相关工具
- maven项目管理工具
- svn/git 项目版本控制器 团队开发项目使用
2、三层架构
- 表现层:是用来展示数据的
- 业务层:是用来处理业务需求
- 持久层:是和数据库交互的
3、持久层技术解决方案
- JDBC技术:
- Connection
- PreparedStatement
- ResultSet
- Spring的JdbcTemplate:
- Spring中对jdbc的简单封装
- Apache的DBUtils:
- 它和Spring 的JdbcTemplate很像,也是对Jdbc的简单封装
以上都不是框架,
- JDBC是规范
- Spring的JdbcTemplate和Apache的DBUtils都只是工具类
4、MyBatis 框架概述
MyBatis 是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
- MyBatis 是一个持久性框架,用java编写的
- 它封装了jdbc的细节,是开发者只用关注sql语句本身,而无需关注驱动,创建链接等繁杂的过程
- 它使用了ORM思想实现了结果集的封装
ORM思想:
Object Relational Mapping 对象关系映射
就是把数据库和实体类及实体类的属性对应起来
-
让我们可以操作实体类就实现操作数据库表
user -----> User
id -----> userId
name -----> userName
5、Mybatis 下载和安装
下载地址:https://github.com/mybatis/mybatis-3/releases
中文官方网址:https://mybatis.org/mybatis-3/zh/index.html
将下载的mybatis-3.5.5.zip进行解压,
其中里面的
- mybatis-3.5.5.jar就是mybatis的核心包,
- mybatis-3.5.5.pdf 是官方文档
- LICENSE是执照
- NOTICE是注意事项,公告
- lib文件夹里面是一些附加包,用来附加一些功能
将mybatis-3.5.5.jar,lib 路径下的所有jar包,还有jdbc所需要的 导入项目,其中 log4j-1.2.17.jar 是用来输出日志的包,并且需要把数据库对应jdbc驱动包导入到项目。
导入包完成后,我们需要对项目进行一定的配置:
我们在java源码文件夹下创建文件夹conf,用来存放我们的配置文件。
(1)配置log4j,创建log4j.properties
代码:
# Rules reminder:
# DEBUG < INFO < WARN < ERROR < FATAL
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# My logging configuration...
log4j.logger.org.mybatis.jpetstore=DEBUG
## Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p %d %C: %m%n
(2)配置数据库链接,可以把数据链接用到的驱动、url、用户名、密码写到一个配置文件中,以后要改直接在配置文件中修改。
在conf文件下创建jdbc.properties 文件
url=jdbc:oracle:thin:@localhost:1521:XE
driver=oracle.jdbc.driver.OracleDriver
username=mybatis
password=123456
(3)配置mybatis,创建mybatis-config.xml文件
代码:
<?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="jdbc.properties"></properties>
<!-- 配置数据库信息 -->
<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>
<!-- 将我们写好的sql映射文件一定要注册到全局配置文件中 -->
</configuration>
其中:
- < property name="driver" value="oracle.jdbc.driver.OracleDriver" /> 中value配置的是数据库驱动,根据自己的数据库配置
- < property name="url" value="jdbc:oracle:thin:@localhost:1521:XE" />中 value配置的是数据库链接的url
- < property name="username" value="mybatis" />中value配置的是需要链接的数据库用户名
- < property name="password" value="123456" />中value配置连接数据库的密码
- < mappers>< /mappers>中配置的是我们后面写好的sql映射文件
6、连接数据库
创建mybatis连接的工具类
MyBatisUtil.java
package com.company.project.util;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
public class MyBatisUtil {
//主配文件路径
private static String resource = "mybatis-config.xml";
//会话工厂
private static SqlSessionFactory sqlSessionFactory;
//会话
private static SqlSession session;
/**
* 创建会话工厂
* @return SqlSessionFactory 会话工厂
*/
public static SqlSessionFactory createFactory(){
if(sqlSessionFactory == null) {
InputStream inputStream;
try {
inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(sqlSessionFactory != null) {
System.out.println("工厂创建成功");
}else {
System.out.println("工厂创建失败");
}
return sqlSessionFactory;
}
/**
* 利用会话工厂创建会话对象
* @return SqlSession 会话对象
*/
public static SqlSession getSession() {
//获取SqlSession实例,能直接执行已经映射的sql语句
SqlSession session = createFactory().openSession();
if(session!=null) {
System.out.println("会话创建成功");
}else {
System.out.println("会话创建失败");
}
return session;
}
}
7、测试数据库的连接
package com.company.project.utiltest;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.log4j.Logger;
import org.junit.platform.commons.logging.LoggerFactory;
import com.company.project.util.MyBatisUtil;
import junit.framework.TestCase;
public class MyBatisUtilTest extends TestCase {
public void testGetSqlSessionFactory() {
SqlSessionFactory sessionFactory = MyBatisUtil.createFactory();
if (sessionFactory != null) {
System.out.println("sessionFactory:" + sessionFactory);
System.out.println("会话工厂创建成功!!!");
} else {
System.out.println("操作提示:sessionFactory创建失败!");
}
}
public void testGetSqlSession() {
SqlSession session = MyBatisUtil.getSession();
if (session != null) {
System.out.println("session:" + session);
System.out.println("会话创建成功!!!");
} else {
System.out.println("操作提示:SqlSession创建失败!");
}
}
}