什么是框架:
,他是一个应用程序的半成品提供可重用的公共结构,按一定规则组织的一组组件,(三层框架,接口和实现类)
优点:
易于维护;代码一致;上手快;开发简单
什么是mybatis 框架:
是持久层的框架,是对jdbc的封装,半自动的orm实现,动态sql小巧灵活,简单易学!
什么是持久层?
持久性——程序数据由瞬时状态和数据库中持久状态之间转换的过程
瞬时—— 程序数据只储存在内存中,断电,或结束程序之后就会销毁!
持久—— 程序文件如果储存在数据库中,就是持久状态,即使是断电,掉电也不影响数据的储存
什么是ORM?
ORM 对象关系映射;
编写程序的时候:以面向对象的方式处理数据
保存数据的时候:却以关系型数据库的方式储存
为什么说mybatis是半自动化的 ?
因为mybatis还需要写sql语句,必要时需要手动映射
hibernate是全自动化的ORM实现,SQL语句动态生成,只操作java对象,但是hibernate相对于mybatis来说,不易于掌握,并且性能差;
#{}与${}区别?
1.1.>:#{}是占位符,底层用的是预编译的SQL操作对象,防止SQL注入;
2.>:${}是拼接字符,用来拼接SQL语句,不能防止SQL注入。
2.1>: #{}遇到字符串,自动添加单引号;
2>:${}不会对参数进行修正,直接拼接参数;
3.1>:#{}参数可以是对象的属性,也可以是简单类型;
2>:${}参数必须是对象的属性
注!!!!!!!!!!!!!!!!!!
能用#{}的尽量不要用${};
生命周期:(三个核心对象
):
SqlSessionFactoryBuilder():
1>:用过即丢,其生命周期只存在于方法体中
2>:
可重用其来创建多个
SqlSessionFactory
实例
3>:
负责构建
SqlSessionFactory
,并提供多个
build
方法的重载
SqlSessionFactory:
!>:
作用:创建
SqlSession
实例
2>:作用域:Application
3>:
生命周期与应用的生命周期相同
4>:单例:
存在于整个应用运行时,并且同时只存在一个对象实例
SqlSession:
1.>:
包含了执行
SQL
所需的所有方法
2>:对应一次数据库会话,会话结束必须关闭
mapper
方式实现
dao
层四个注意事项:
1>:mapper.xml
中namespace=mapper
接口中的全限定类名一致
2>:mapper
接口中的方法名=mapper.xml
中sqlId
3>:
接口中的输入参数类型=parameterType
4>:
接口中的返回值类型=resultType
的类型
resultType 与 resultmap 区别和用法:
resultType:对象、简单类型、map
resultmap: 手动映射时使用;(参数属性与对象的属性不一致时;)