个人笔记
JDBC操作
固定6个步骤
1.注册驱动【源码装入内存
2.建立数据库连接
3.获取一个Statement对象
4.执行sql语句
5.处理结果集【如果有的话】
比较繁琐
用户自己提取数据 封装处理
6.释放资源
结论:
1.jdbc操作固定6步骤 代码复用率太低 重复动作
2.结果集处理 过于繁琐
核心【Mapping 映射】
查询 表 --> 对象
drop table student;
create table student(
id number primary key,
name varchar2(30) not null,
age number,
birthday date
);
insert into student
values(1,'tom',21,'12-9月-19');
commit;
SSM SSH
有了Mybatis Hib
Mybatis框架
工具 包含很多简单的方法【底层通过jdbc实现功能】
前提: 按照规范来使用 框架
学习 使用的规范
增删改查
引入单元测试jar包
junit4.7.jar
main方法中 运行
数据库操作
1.导入jar包
2.方法上 添加@Test注解
选中 函数名,右键Run As -- JUnit运行
导入jar包
mybatis-3.3.0.jar junit-4.7.jar
ojdbc14.jar log4j-1.2.17.jar[配置]
表students 类com.briup.pojo.Student
搭建Mybatis开发环境
1.准备配置文件 mybatis-config.xml
四要素
2.映射文件 XxxMapper.xml
sql语句
3.映射接口 XxxMapper.java
对应的方法
4.测试文件
XxxTest.java
通过mybatis实现数据库操作固定步骤
1.获取sqlSession工厂对象
2.获取sqlSession对象
3.获取mapper对象
4.通过mapper对象调用接口方法,执行sql语句,实现功能
sql语句的书写规范
**************************************
day2课堂笔记
1.简单封装sqlSession的获取
MyBatisSqlSessionFactory
2.mybatis底层实现原理:
Preparing:
update students set name=?,email=?,dob=? where stud_id=?
Parameters:
jack(String), jack@qq.com(String), 2019-09-03 09:51:43.196(Timestamp), 2(Integer)
Updates: 1
结论:
Mybatis底层 借助JDBC实现功能
PreparedStatement对象完成 sql语句的执行
3.入门案例升级
insert 自动生成主键列
oracle中借助序列来实现
mysql支持主键自动增长
序列的创建和使用
drop sequence stu_seq;
create sequence stu_seq;
select stu_seq.nextval
from dual;
select stu_seq.currval
from dual;
4.mybatis-config.xml具体配置
1.dtd约束
xml文件两种约束: dtd schame
mybatis-3-config.dtd
规定了xml文件中可以出现什么标签,标签中可以出现什么属性
添加约束文件后,书写xml标签时必须遵循规范,否则出差!
2.配置本地的dtd文件约束
就算断网、网上dtd文件资源失效|删除,约束依旧生效
别名的声明
<typeAliases>
<!--
为单个类声明别名
<typeAlias alias="Student" type="com.briup.pojo.Student" /> -->
<!-- 声明指定包下面所有自定义类型别名为 类名,往往配合
@Alias("别名")
class 类
-->
<package name="com.briup.pojo"/>
</typeAliases>
5.mybatis内置类型转换器
自动转换 数据库类型 -- Java数据类型
4类8种基本数据类型
String Date Timestamp ...
但是,用户自定义数据类型,无法直接和数据库类型进行转换
比如:
private PhoneNumber phone;
phone varchar2(50);
通过用户自定义类型转换器,解决 自定义类型和数据库类型的转换
1.修改表结构
2.添加PhoneNumber类,修改Student类
3.定义类型转换器
4.做好配置
********************