目录
框架
- 软件框架(software framework),通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品。
- 框架是一个半成品,在半成品的基础上完成自己的业务。本阶段的所有框架都是基于jar包(class文件)和xml配置文件(调用class文件)
- 三层架构:控制层Servlet、业务逻辑层service、持久层dao
Mybatis
Mybatis是一个基于Java的持久层框架,它内部封装了jdbc,使开发者只需要关注SQL语句本身,而不需要花费精力去处理加载驱动,创建连接,创建statement等繁杂的过程
Mybatis通过xml或注解的方式将要执行的各种statement配置起来,并通过Java对象和statement中SQL的动态参数进行映射生成最终执行的SQL语句,最后由Mybatis框架执行SQL并将结果映射为Java对象并返回
- Mybatis是dao层的一个框架
- Mybatis又叫ibatis
- Mybatis是一个半自动化的ORM框架
优势- 可以简化代码,去除重复繁琐的代码;
- 可以自动完成对象和数据库数据的转换;
- 支持缓存机制以及动态sql
- 支持将表与表之间的关系转换为实体与实体之间的关系
Mybatis框架的工作流程
传统:数据源------>connection------>prepastatemnet----->resultset(jdbc)
Mybatis:
加载配置文件 -->sqlSessionFactory---->sqlSession(excutor)------>statement mapper
配置文件(xml格式):全局配置文件(数据源,映射文件,别名)+映射文件(sql语句)
Mybaits 的mapper代理模式
Mybatis作为dao层的传统开发模式:接口------>实现类
Mapper代理模式:开发人员在遵循mybatis提供的一些规范的前提下,mybatis帮我们自动生成dao接口的实现类。
规范:
- 映射文件中命名空间等于dao层接口的全路径
<mapper namespace="com.yx.dao1.UserDao">
- 映射文件中sql语句的id是dao层接口里的方法名
<select id="selectAll" resultType="com.yx.bean.User">
select * from user
</select>
- 映射文件中输入参数和输出参数的类型和dao层接口里的方法的参数和返回结果保持一致。
Mybaits中参数
parameterType:输入输出参数类型,int、String、对象、List、Map
resultType:返回结果类型,int、String、对象、List、Map
占位符:#{}、${}
- #{} 等价于占位符?,输入参数是非自定义类型#{任意定义},输入参数是自定义类型#{自定义类型的属性名}
<select id="selectLike" parameterType="user" resultType="com.yx.bean.User">
select * from user where username like "%"#{
username}"%" and sex=#{
sex}
</select>
- ${}等价于拼接方式,输入参数是非自定义类型(String除外)#{任意定义},输入参数是自定义类型#{自定义类型的属性名},String类型作为输入参数(只有一个参数时)用 ${value}
<select id="selectLike2" parameterType="String" resultType="com.yx.bean.User" >
select * from user where username like '%${username}%' and sex=#{
sex}
</select>
<select id="selectLike3" parameterType="String" resultType="com.yx.bean.User" >
select * from user where username like '%${value}%'
</select>