1.什么是框架?
它是我们软件开发中的一套解决方案,不同的框架解决的是不同的问题。
使用框架的好处:
框架封装了很多的细节,使开发者可以使用极简的方式实现功能,大大提高开发效率。
mybatis的概述
mybatis是一个持久层框架,用java编写的。它封装了jdbc操作的很多细节,使开发者只需要关注sql语句本身,而无需关注注册驱动,创建连接等繁杂过程.使用了ORM思想实现了结果集的封装。
ORM
Object Relational Mappging 对象关系映射
就是把数据库表和实体类及实体类的属性对应起来
让我们可以操作实体类就实现操作数据库表。
2创建Mybatis的主配置文件
<?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">
<!--mybaits的主配置文件-->
<configuration>
<!--配置环境-->
<environments default="mysql">
<!--配置mysql环境-->
<environment id="mysql">
<!--配置事务类型-->
<transactionManager type="JDBC"></transactionManager>
<!--配置数据源(连接池)-->
<dataSource type="POOLED">
<!--配置数据源(连接池)的基本信息-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
//此处的mybatis是你连接的数据库名称
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!--指定映射配置文件的位置,映射配置文件指的是每个dao配置的文件-->
<mappers>
<!--<mapper resource="com/daniel/dao/IUserDao.xml"/> 使用的是xml-->
<mapper class="com.daniel.dao.IUserDao"/> <!--使用的是注解 annotations-->
</mappers>
</configuration>
3. mybatis设计模式分析
下面是一个简单的mybatis测试类代码(在之前要创建实体类和实现dao接口,创建Mybatis的主配置文件)。
public static void main(String[] args) throws Exception {
//1.读取配置文件
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
//2.创建SqlSessionFactory工厂
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(in);
//3.使用工厂生产SqlSession对象
SqlSession session = factory.openSession();
//4.使用SqlSession创建Dao接口的代理对象
IUserDao userDao = session.getMapper(IUserDao.class);
//5.使用代理对象执行方法
List<User> users = userDao.findAll();
for (User user : users) {
System.out.println(user);
}
session.close();
in.close();
}
1.读取配置文件
目的:加载SqlMapConifg.xml里的信息
第一种:类加载器,不过只能读取类路径的配置文件
第二种:使用ServletContext对象的getRealPath()方法
2.创建SqlSessionFactory工厂
使用了构造者模式,把对象的创建细节隐藏,让使用者直接可以拿到对象
builder就是构建者,我们只需要输入in即可得到工厂。
3.生产SqlSession对象
这一步使用工厂模式生产了SqlSession对象,可以降低类之间的依赖关系。
目的:创建的Session对象可以让程序创建dao代理对象,来实现接口中的方法增强的目的。
不使用new SqlSession来创建对象是因为在实际开发中如果需要更换实现方式就要重新更改源代码等一系列操作,造成不便。
4.创建代理对象
使用代理模式创建dao实现类,以此添加findAll方法来实现目的。(在dao接口的实体类中定义findAll方法)