mybatis入门
-
什么是框架?
他是我们软件开发的一套解决方案,不同框架解决不同而难题
好处:
框架封装了很多细节,使开发者可以使用极简的方式实现功能,大大提高开发效率。
-
三层架构
表现层:展示数据
业务层:处理业务需求
持久层:和数据库交互
3. 持久层技术解决方案
JDBC技术:
Connection
PreparedStatement
ResultSet
Spring的JdbcTemplate
spring中对jdbc的简单封装
Apache的DBUtiles:
简单封装
以上这些都不是框架
JDBC是规范
其余为工具类
mybatis的概述
mybatis是一个持久层框架,用java编写
它封装了jdbc操作的很多细节,使开发者只需要关注sql本身,而无需关注 注册驱动,创建连接等繁杂过程
它使用了ORM思想实现了结果集的封装。
ORM:
Object Relational Mapping 对象关系映射
简单的说:
就是把数据库表和实体类及实体类的属性对应起来
让我们可以操作实体类就实现操作数据库表。
今天我们需要做到
实体类中的属性和数据库表的字段名保持一致
mybatis的环境搭建
第一步,创建maven工程,并导入坐标
pom.xml文件导入依赖(在dependencies标签中导入)
第二步,创建实体类和dao/mapper接口
实体类满足Serializable接口
第三步,创建Mybatis的主配置文件
注:idea中配置文件放在resource目录下
例如:SqlMapConfig.xml,文件中有声明和约束
-
标签:default属性,默认启用哪个环境- -
-
标签:配置环境,id用于当前环境的标识,可以填入的default属性
-
:配置事物类型
-
:配置数据源(连接池)
配置连接数据库信息value中填入相应信息
- 驱动
- url
- 用户名
- 密码
-
-
:指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件
- 指定文件位置
第四步,创建映射配置文件
IUserDao.xml
-
namespace写配置文件的全限定名
写数据库语句
- 查询标签。id写dao/mapper接口中方法的名字
环境搭建的注意事项:
-
创建IUserDao.xml 和 IUserDao.java时
名称是为了和之前保持一致
在mybatis中,把持久层的接口名称和映射文件叫做:Mapper
所以:IUserDao 和 IUserMapper是一样的
-
mybatis的映射配置文件位置必须和dao接口的包结构相同
-
映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定类名
-
映射配置文件的操作配置(select),id属性的取值必须是dao接口的方法名
当我们遵从上述2.3.4点,我们就无须再写dao的实现类
mybatis基本使用
-
读取配置文件
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
读取配置文件:
一般不用绝对路径或者相对路径
1.使用类加载器:只能读取到类路径的配置文件
2.使用ServletContext对象的getRealPath():得到一个当前应用部署的绝对路径。
-
创建SqlSessionFactory工厂
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); SqlSessionFactory factory = builder.build(in);
创建工厂mybatis使用了构建者模式
- 优势:把对象的创建细节隐藏,使使用者直接调用方法即可拿到对象,省去了繁琐的细节
-
使用工厂生产SqlSession对象
SqlSession session = factory.openSession();
生产SqlSession使用了工厂模式
- 优势:解耦(降低类之间的依赖关系)
-
使用sqlsession创建Dao接口的代理对象
IUserDao user = session.getMapper(IUserDao.class);
创建Dao接口实现类使用了代理模式
- 优势:不修改源码的基础上对已有方法增强
-
使用代理对象执行dao中的方法
执行方法
-
释放资源
close关闭
注:
不要忘记在映射文件中告知mybatis要封装到哪个实体类中
配置方式:指定实体类的全限定类名(resulttype,resultmap)
mybatis基于注解的入门案例:
把IUserDao.xml移除,在dao接口的方法上使用@Select注解,并且指定SQL语句
同时需要在SqlMapConfig.xml中的mapper配置时,使用class属性指定dao接口的全限定类名
明确:实际开发中,越是简便越好,所以都不写dao实现类的方式,一般采用xml和注解,但是mybatis支持写dao实现类
自定义mybtis的分析
-
mybatis在使用代理Dao的方式实现增删改查时做什么事?
-
创建对象
-
在代理对象中调用selectList
要让上述方法执行,我们必须给方法提供两个信息
第一个:连接信息
第二个:映射信息
它包含了两个部分:
一:执行的SQL语句
二:封装结果的实体类全限定名
可以把以上两个信息结合起来定义成一个对象–>Mapper
下一篇
mybayis单表的crud
-