快速入门
框架介绍
框架是一款半成品软件,我们可以基于这个半成品软件继续开发,来完成我们个性化的需求

Application
:指应用程序,需要程序员自己编写代码
persistent Objects
:指持久层对象,可对数据库进行操作
Hibernate/Mybatis
:需配置的框架,及基于此进行对Database的操作
ORM介绍
- ORM(Object Relational Mapping):对象关系型映射
指的是持久层数据与实例对象的映射模式,为了解决面对对象和关系型数据库存在相互不匹配的现象的技术 -
数据库对象 | 实例对象 |
---|---|
数据库表(table) | 类(class) |
数据库行数据(record) | 对象(object) |
数据库列字段(field) | 对象属性(attribute) |
Mybatis介绍
Mybatis官网
- MyBatis 是一个优秀的基于 Java 的持久层框架,它内部封装了 JDBC,使开发者只需要关注 SQL 语句本身,而不需要花费精力去处理加载驱动、创建连接、创建执行者等复杂的操作
- MyBatis 通过 xml 或注解的方式将要执行的各种 Statement 配置起来,并通过 Java 对象和 Statement 中SQL 的动态参数进行映射生成最终要执行的 SQL 语句
- MyBatis 框架执行完 SQL 并将结果映射为 Java 对象并返回。采用 ORM 思想解决了实体和数据库映射的问题,对 JDBC 进行了封装,屏蔽了 JDBC API 底层访问细节,使我们不用与 JDBC API 打交道,就可以完成对数据库的持久化操作
原生JDBC存在的问题
- 频繁创建和销毁数据库的连接会造成系统资源浪费从而影响系统性能
- sql 语句在代码中硬编码,如果要修改 sql 语句,就需要修改 java 代码,造成代码不易维护
- 查询操作时,需要手动将结果集中的数据封装到实体对象中
- 增删改查操作需要参数时,需要手动将实体对象的数据设置到 sql 语句的占位符
Mybatis相关API
Resource
:org.apache.ibatis.io.Resources:加载资源的工具类
注意
:文件放在类路径下面
返回值 | 方法名 | 说明 |
---|---|---|
inputstream | getResourceAsStream(String fileName) | 通过类加载返回指定资源的字节输入流 |
SqlSessionFactoryBuilder
: org.apache.ibatis.io.Resources:获取 SqlSessionFactory 工厂对象的功能类
本质
:通过构造者模式
获取sqlSessionFactory对象
返回值 | 方法名 | 说明 |
---|---|---|
sqlSessionFactory | build(inPutSteam is) | 通过指定资源字节输入流获取sqlSessionFactory对象 |
SqlSessionFactory
:org.apache.ibatis.session.SqlSessionFactory:获取 SqlSession 构建者对象的工厂接口
本质
:通过工厂模式
获取sqlSession对象
返回值 | 方法名 | 说明 |
---|---|---|
sqlSession | openSqlSession(boolean autocommit) | 获取sqlSession构造者对象,参数为TRUE,则开启自动提交事务 |
sqlSession | openSqlSession() | 获取sqlSession构造者对象,默认关闭自动提交事务 |
SqlSession
:org.apache.ibatis.session.SqlSession:构建者对象接口。用于执行 SQL、管理事务、接口代理
本质
:SqlSession 可以理解为相当于一个数据库连接(Connection 对象),你可以在一个事务里面执行多条 SQL,然后通过它的 commit、rollback 等方法,提交或者回滚事务
因此它应该存活在一个业务请求中,处理完整个请求后,应该关闭这条连接,让它归还给 SqlSessionFactory,否则数据库资源就很快被耗费精光,系统就会瘫痪,所以用 try...catch...finally... 语句来保证其正确关闭
返回值 | 方法名 | 说明 |
---|---|---|
List<E> | selectList(String statement, Object paramter) | 执行查询语句,返回List集合 |
T | selectOne(String statement, Object paramter) | 执行查询语句,返回一个结果对象 |
int | insert(String statement, Object paramter) | 执行插入语句,返回影响行数 |
int | update(String statement, Object paramter) | 执行更新语句,返回影响行数 |
int | delete(String statement, Object paramter) | 执行删除语句,返回影响行数 |
void | commit() | 提交事务 |
T | getMapper(class<T> cl) | 获取指定接口的代理实现类对象 |
void | rollback() | 回滚事务 |
void | close() | 释放资源 |
Mybatis映射文件介绍
<?xml version="1.0" encoding="UTF-8" ?>
<!--MyBatis的DTD约束-->
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--
mapper:核心根标签
namespace属性:名称空间
-->
<mapper namespace="StudentMapper">
<!--
select:查询功能的标签
id属性:唯一标识
resultType属性:指定结果映射对象类型
parameterType属性:指定参数映射对象类型
sql获取参数:#{属性名}
-->
<select id="selectAll" resultType="student">
SELECT * FROM student
</select>
<select id="selectById" resultType="student">
SELECT * FROM student where id = #{id}
</select>
<insert id="addStu">
insert into student values (#{id}, #{name}, #{age})
</insert>
<update id="updateStu">
update student set name = #{name}, age = #{age}
</update>
<delete id="deleteStu" parameterType="int">
delete FROM student where id = #{id}
</select>
</mapper>
**Mybatis核心配置文件介绍
<?xml version="1.0" encoding="UTF-8" ?>
<!--MyBatis的DTD约束-->
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--configuration 核心根标签-->
<configuration>
<!--引入数据库连接的配置文件-->
<properties resource="jdbc.properties"/>
<!--配置LOG4J-->
<settings>
<setting name="logImpl" value="log4j"/>
</settings>
<!--起别名-->
<typeAliases>
<typeAlias type="com.itheima.bean.Student" alias="student"/>
<!--<package name="com.itheima.bean"/>-->
</typeAliases>
<!--environments配置数据库环境,环境可以有多个。default属性指定使用的是哪个-->
<environments default="mysql">
<!--environment配置数据库环境 id属性唯一标识-->
<environment id="mysql">
<!-- transactionManager事务管理。 type属性,采用JDBC默认的事务-->
<transactionManager type="JDBC"></transactionManager>
<!-- dataSource数据源信息 type属性 连接池-->
<dataSource type="POOLED">
<!-- property获取数据库连接的配置信息 -->
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<!-- mappers引入映射配置文件 -->
<mappers>
<!-- mapper 引入指定的映射配置文件 resource属性指定映射配置文件的名称 -->
<mapper resource="StudentMapper.xml"/>
</mappers>
</configuration>
网友评论