MyBatis学习笔记 (一)
本系列笔记学习的是黑马程序员推出的ssm系列课程,感谢老师的精彩讲解,在此立贴以示感激。
一、MyBatis概述
MyBatis是一款优秀的Java持久层框架,它封装了JDBC,使开发者只需要关注Sql语句本身,二不需要花费精力去处理加载驱动,创建连接、创建Statement等繁杂的过程
MyBatis通过xml或注解的方式将要执行的各种statement配置起来,并通过java对象和statement中sql的动态参数进行映射生成最终执行的sql语句,最后由MyBatis框架执行sql并将结果映射为java对象并返回。
采用ORM思想解决了实体和数据库映射的问题,对JDBC进行了封装,屏蔽了JDBC API底层访问细节,是我们不用与JDBC API打交道,就可以完成对数据库的持久化操作。
二、环境搭建
1.创建maven工程并导入坐标,即在pom.xml中添加依赖(包括mybatis,mysql,log4j,junit):
(E:\日常总结\ssm框架\截图\image-20200128225556171.png)]
2.创建数据库表以及对应的Java实体类
3.创建dao接口
4.创建MyBatis的主配置文件(SqlMapConfig.xml):
5.创建映射配置文件(IUserDao.xml):
注意事项:
1.在MyBatis中,dao常被成为Mapper
2.包与目录的创建方式不同:
例如:com.itheima.IUserDao以packege方式创建是三级目录,
以目录方式创建是一级目录。
3.MyBatis的映射文件和Dao接口的包结构必须相同。(即IUserDao.xml与IUserDao.java的包结构必须相同)
4.映射配置文件的mapper的namespace属性必须是dao接口的全限定类名
5.映射配置文件的操作配置id属性必须是dao接口的方法名
三、入门案例
1.步骤:
2.设计模式:
3.过程分析:
(1)解析主配置文件获取数据库连接:
MyBatis据此自动注册驱动,获取连接,创建connection对象
(2)解析映射配置文件:
获取执行的sql语句,MyBatis据此构造preparedStatement。
(3)执行查询操作:
ResultSet rs = preparedStatemnt.executeQuery();
(4) 遍历结果集并封装
List list = new ArrayList ();
while(rs.next()){
E element = class.forName(配置的全限定类名(即resultType)).newInstance();
进行封装,把每个rs中的属性封装到element的属性之中
把element加入到list中
list.add(element);
}
tip:在MyBatis中存在一个mapper对象,将Sql语句与封装结果的实体类全限定类名封装成一体
且存在一个map,用来保存实体类与其接口的对应关系。map的key为实体类的全限定类名(namespace属性)与接口的名称(id属性),value为sql语句与封装结果的全限定类名(resultType)。
(5)返回list