回顾
1.框架的概述
框架其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别人搭好的舞台,你来做表演。而且,框架一般是成熟的,不断升级的软件
2.JDBC编程问题分析
1、数据库连接、创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库连接池可解决此问题。
2、sql语句在代码中硬编码,造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码。
3、使用preparedStatement向占有位符号传参数存在硬编码,因为sql语句的where条件不一定,可能多也可能少,修改sql 还要修改代码,系统不易维护。
4、对结果集解析存在硬编码(查询列名),sql变化导致解析代码变化,系统不易维护,如果能将数据库记录封装成pojo对象解析比较方便。
3.mybatis框架概述
MyBatis是一款优秀的持久层框架,它不需要像JDBC那样去写复杂代码、手动设置参数、繁琐的处理结果集。它采用简单的XML配置 + 接口方法的形式实现对数据库的增删改查,使得让程序员只关注sql本身
4.MyBatis的快速入门 执行原理
1. 原生代码操作数据库需要5步骤
1. 加载核心配置文件(SqlMapConfig.xml)
2. 构建SqlSessionFactory工厂对象
3. 通过工厂创建SqlSession会话对象(Connection)
4. 执行sql语句
5. 释放资源
5.基于接口代理方式实现dao开发规范
- Mapper映射文件的namespace与Mapper接口全限定名一致
- Mapper接口的方法名与id的属性名一致
- 方法的参数类型与parameterType属性类型一致
- 方法的返回值类型(集合的泛型才是返回值的类型)与resultType属性类型一致
- 映射文件需要与接口在同一个包下,文件名和接口名相同
今日知识点
6.配置文件属性说明:
1. resultType 属性:用于指定结果集的类型。
2. parameterType 属性:用于指定传入参数的类型。
3. sql 语句中使用#{}字符:它代表占位符,相当于原来 jdbc 部分所学的?
7.#{}与${}的区别
#{}表示一个占位符号通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换,#{}可以有效防止sql注入。#{}可以接收简单类型值或对象属性值。如果parameterType传输单个简单类型值,#{}括号中可以是value或其它名称。
${}表示拼接sql字符串。通过${}可以将parameterType传入的内容拼接在sql中且不进行jdbc类型转换, ${}可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,${}括号中只能是value。
特别注意:${}表示拼接sql字符串,有sql注入风险,实际开发不建议采用这种模糊查询方式
8.resultMap完成属性映射标签:
id 标签:用于指定主键字段
result 标签:用于指定非主键字段
column 属性:用于指定数据库列名
property 属性:用于指定实体类属性名称