1.关于JDBC编程步骤:
a.加载数据库驱动
b.创建并获取数据库的连接
c.创建jdbc statement对象
d.写入sql
e.通过statement执行 获取返回结果
f.对sql执行的结果进行处理
e.释放资源
2.JDBC的问题
a.数据库创建,连接 释放,非常的频繁,造成资源的浪费, 用数据库链接池可解决此问题。
b.sql语句在代码中编码,造成代码不利于维护,实际应用中的sql变化可能较大,sql变动可能需要修改java代码
c.使用preparedStatement 占有符号穿参数存在硬编码的问题, 因为sql语句的where条件不一定,可能多也可能少,修改sql还要修改代码,系统不易维护。
d.对结果集解析存在硬编码,sql变化导致解析代码变化,系统不易维护。
3.mybaits架构
SqlConfig.xml : mybatis全局配置文件,配置mybatis的运行环境
mapper.xml : sql的映射文件,文件中配置操作数据库的sql语句(需要在sqlConfig.xml中配置)
SqlSessionFactory:通过mybatis配置信息构造
SqlSession : 通过SqlSessionFactory打开
Executor: 是mybatis底层自定义的执行接口, Executor接口有两个实现,一个是基本执行器、一个是缓存执行器。
Mapped Statement:也是mybatis底层封装对象,包装了mybatis的配置信息,以及sql的映射。
Mapped Statement对sql执行输入参数进行定义,相同也对输出的结构进行定义。
sqlconfig.xml在pdf中可以找到
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
user.xml同样在pdf中可以找到
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.mybatis.example.BlogMapper">
<select id="selectBlog" parameterType="int" resultType="Blog">
select * from Blog where id = #{id}
</select>
</mapper>
namespace:
命名空间,用于隔离sql语句
parameterType
:定义输入到sql中的映射类型,#{id}表示使用preparedstatement设置占位符号并将输入变量id传到sql。
resultType:
定义结果映射类型。
我会上传一个pdf里边会有,明天继续。