- 三大框架和三层架构
ssm: SpringMVC Spring Framework Mybatis
三层架构:
表示层: 与客户端实现交互。 SpringMVC
业务逻辑层: 处理表示层业务关系。 Spring Framework
数据持久层: 与数据库进行交互。 Mybatis
- 什么是框架
将繁琐的,重复性工作封装起来,使开发者能够将更多精力放在业务分析和理解上的这套程序。
框架的优点:
- 简化开发,提升开发效率。
- 屏蔽细节,安全性高
- Mybatis框架
- 传统jdbc的问题
- 连接四个参数有硬编码问题。(配置文件)
- sql的定制不够灵活 (配置文件)
- 频繁打开和关闭连接,耗时。(连接池)
- 什么是mybatis
mybatis最早是apache下的项目,ibatis;
被移植到google code上,正式更名为mybatis。
github:开源管理平台
官网:http://www.mybatis.org/mybatis-3/
mybatis是一个持久层框架,支持定制化sql,存储过程和高级映射。
mybatis通过xml或者注解实现定制。
mybatis是一个orm框架。
orm:对象关系映射(java对象和关系型数据库表记录之间的映射问题)
关注点:
sql / 输入参数 / 输出结果
-
- 下载
https://github.com/mybatis/mybatis-3/releases
- 入门案例
- 创建java项目,导入jar(mybatis核心jar,数据库驱动包)
- 增删改查
- mapper代理实现dao开发
- mapper接口+mapper配置文件
- mapper接口和mapper映射文件必须同包同名
- mapper映射的namespace和接口全限定名称保持一致
- mapper标签的id值和接口的方法名称一致
- 标签的输入参数和接口方法的输入参数类型一致
- 标签的结果类型和接口方法的返回值类型一致
- 注解实现
- 高级映射
resultType:
结果集字段名称和属性名一致则映射成功;
结果集字段和属性名部分一致则部分映射成功;
结果集字段和属性名都不一致不会创建对象。
一对多
<!-- type:对象类型 orm --> <resultMap type="dept" id="deptMap"> <!-- 主键字段映射 --> <id column="deptno" property="deptno"/> <!-- 非主键字段映射 --> <result column="dname" property="dname"/> <result column="loc" property="loc"/> <!-- 封装结果到集合 property:属性 javaType:每个对象类型 --> <collection property="emps" ofType="emp" column="deptno"> <id column="empno" property="empno"/> <result column="ename" property="ename"/> <result column="job" property="job"/> <result column="hiredate" property="hiredate"/> <result column="mgr" property="mgr"/> <result column="sal" property="sal"/> <result column="comm" property="comm"/> <result column="deptno" property="deptno"/> </collection> </resultMap> |
一对一
<resultMap type="emp" id="empMap"> <id column="empno" property="empno"/> <result column="ename" property="ename"/> <result column="job" property="job"/> <result column="hiredate" property="hiredate"/> <result column="mgr" property="mgr"/> <result column="sal" property="sal"/> <result column="comm" property="comm"/> <result column="deptno" property="deptno"/> <!-- 封装结果到对象中 --> <association property="dept" column="deptno" javaType="dept"> <id column="deptno" property="deptno"/> <result column="dname" property="dname"/> <result column="loc" property="loc"/> </association> </resultMap> <select id="findEmpAndDept" resultMap="empMap"> select * from emp left join dept on emp.deptno = dept.deptno </select> |