对原生态jdbc程序中问题的总结:
(1)数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响数据库性能。
设想:使用数据库连接池管理数据库连接。
(2)将sql语句硬编码到java代码中,如果sql 语句修改,需要重新编译java代码,不利于系统维护。
设想:将sql语句配置在xml配置文件中,即使sql变化,不需要对java代码进行重新编译。
(3)向preparedStatement中设置参数,对占位符号位置和设置参数值,硬编码在java代码中,不利于系统维护。
设想:将sql语句及占位符号和参数全部配置在xml中。
(4)从resutSet中遍历结果集数据时,存在硬编码,将获取表的字段进行硬编码,,不利于系统维护。
设想:将查询的结果集,自动映射成java对象。
1.什么是mybatis?
mybatis是一个持久层框架,是apache下的顶级项目。
mybatis托管到goolecode下,再后来托管到github。
mybatis主要让程序主要精力放在sql上,通过mybatis提供的映射方式,自由灵活生成(半自动化,大部分需要程序员编写sql)满足需要sql语句。
mybatis可以将向prepardStatement中的输入参数自动进行输入映射,将查询结果集灵活映射成java对象(输出映射)。
2.mybatis框架
配置了数据源、事务等mybatis运行环境
配置映射文件(配置sql语句)
mapper.xml(映射文件)、mapper.xml、mapper.xml.....
(2)SqlSessionFactory(会话工厂),根据配置文件创建工厂
作用:创建SqlSession
(3)SqlSession(会话),是一个接口,面向用户(程序员)的接口
作用:操作数据库(发出sql增、删、改、查)
(4)Executor(执行器),是一个接口(基本执行器、缓存执行器)
作用:SqlSession内部通过执行器操作数据库
(5)mapped statement(底层封装对象)
作用:对操作数据库存储封装,包括 sql语句,输入参数、输出结果类型
(6)输入参数类型
java简单类型
hashmap
pojo自定义
(7)输出结果类型
java简单类型
hashmap
pojo自定义
执行顺序:(1)SqlMapConfig.xml--->(2)SqlSessionFactory--->(3)SqlSession--->(4)Executor--->(5)mapped statement--->mysql
输入参数--->mapped statement---->输出参数