框架概念
使用框架前后对比
之前的MVC结构与框架对比:
持久层(Dao)技术解决方案
1. JDBC技术:
Connection 获取连接
PreparedStatement 提前处理sql语句
ResultSet 处理sql语句获得结果
2. Spring的JdbcTemplate(工具类):
Spring对jdbc的简单封装
3. Apache的DBUtils(工具类):
和Spring的JdbcTemplate很像,也是简单封装
4. 数据池:
彻底死掉的C3P0(ssh里面的h框架的内置数据池)
咸鱼翻身的DBCP
功能全面的Druid(阿里云)
性能无敌的HikariCP
Mybatis框架概述
内部封装了jdbc,使开发者只需要关注sql语句本身,而不用花费精力去处理加载驱动、创建连接等工作。
通过xml或者注解的方式将执行的各种statement配置起来,并且通过java对象和statement中的sql动态参数进行映射生成最终的sql语句,最后由框架执行sql语句并且将结果映射给java对象并且返回。
通过ORM思想(Object Relational Mappging 对象关系映射)解决了实体和数据库映射的问题,对jdbc的api底层访问细节,使我们不用于jdbc的api打交道,就可以完成数据库的持久化操作
Mybatis环境搭建
前期环境准备
1.新建数据库
1 | CREATE TABLE `user` ( |
2.通过无骨架的创建方式创建maven工程
3.通过pom.xml文件去添加mybatis和mysql的jar包
1 | <?xml version="1.0" encoding="UTF-8"?> |
书写代码框架
1.main/java里书写domain和dao层代码
dao层IUserDao类:
1 | public interface IUserDao { |
domain层的User类:
1 | public class User implements Serializable { |
2.创建Mybatis的主配置文件 sqlMapConfigxml(需要导入外部的约束(就是前面的四行))
1 | <?xml version="1.0" encoding="UTF-8"?> |
3.创建映射配置文件 IUserDao.xml((需要导入外部的约束(就是前面的四行))
1 |
|
Mybatis的xml配置开发
拷贝日志文件(log4j.properties)
1 | # Set root category priority to INFO and its only appender to CONSOLE. |
书写Test类
在src/test/java里面写Test类
1 | public class MybatisTest { |
更改IUserDao.xml映射文件(增加结果封装到哪里)
1 | <select id="findAll" resultType="com.itheima.domain.User"> <!--我们要把结果封装到User才可以--> |
测试执行
1.最终的入门程序格式:
2.代码执行结果:
xml开发方式中设计模式分析
1 | //1.读取配置文件 |
每一步的解析:
Mybatis注解开发
准备之前的所有东西
1.将pom导入的jar文件写在新的项目的pom.xml里面
2.将上面用xml配置方式的src/java和resource以及test测试类全部拷贝进新项目
进行xml更改为注解方式
3.删除之前的IUserDao.xml的配置方式(里面写的是查询语句和最后返回给User封装)
4.在IUserDao的接口里面使用Select注解(把之前的xml方式的东西挪到里面)
1 | public interface IUserDao { |
5.那么要删除SqlMapConfig.xml的Mybatis主配置(之前是链接xml的位置 现在是直接找到类名)
1 | <!--指定映射配置文件的位置 映射配置文件指的是每个dao独立的配置文件--> |