@
目录总结内容
1. 基本概念
- Mybatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。
2. Mybatis的使用
需求
- 实现简单增删改查
代码地址:https://blog.csdn.net/zzvar/article/details/115830222
配置文件简介
-
添加项目需要的jar包
1)mysql-connection-java-5.1.26-bin.jar(jar包可以根据自己需要更换)
MySQL数据库的JDBC驱动包,访问MySQL必须导入的jar包
2)mybatis-3.4.5.jar(jar包可以根据自己需要更换)
MyBatis 框架的核心jar包 -
XxxMapper.xml 配置文件
<?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 属性,对应的值必须是改文件所在包名 + "." + 该文件的名称(不带后缀名)
用于区分sql的唯一性-->
<mapper namespace="com.yy.homework.mapper.TeacherMapper">
<!-- insert 标签 id 属性,它是唯一标识符,指在当前文件中必须是唯一的
目的:表示 sql 唯一性 -->
<!-- 原因:在开发中,如果需要获取到数据库中自动生成的主键,可以通过mybatis来实现
useGeneratedkeys: 表示当前文件中唯一
keyProperty: 表示是否需要获取主键的值
parameterType: 传入参数的类型(一般不写)-->
<!-- #{变量} 整体是占位符,相当于 preparedStatement 中的 ?
变量:如果传入的参数类型是简单类型(包含String),可以随便使用变量使用变量名
如果传入的参数类型是对象类型,必须使用对象中的属性的名称 -->
<insert id="delete">
delete from Teacher where userID = #{userID}
</insert>
<!-- resultType 设置数据的类型,高数MyBatis框架,让 MyBatis 把数据库返回的数据封装成 resultType 类型的对象
resultMap 处理表中的列的名称和类中属性名称不一致的情况的映射关系 -->
<select id="selectAll" resultType="com.yy.domain.Teacher>
select * from Teacher
</select>
</mapper>
- 理解:MyBatis 的执行流程
1)加载主配置文件(mybatis-config.xml)到内存中,将数据封装到对象(Configuration/Environment/TransactionManager/DataSource等)
2)通过操作拿到访问数据库的基本信息,根据这些数据创建SqlSessionFactory对象
3)从SqlSessionFactory对象中获取到SqlSession对象,然后执行SQL
4)insert into user(name,age,salary,hiredate) values(#{name},#{age},#{salary},#{hiredate}); 被翻译成 insert into user(name,age,salary,hiredate) values(?,?,?,?);
5)使用PreparedStatement来执行指定的SQL,从传递进来的User对象中依次获取到name/age/salary/hiredate 这些属性的值,这里需要使用到内省机制来访问对象中的属性。
总结
以上就是 jdbc 连接数据库的总结了,代码仅供参考,欢迎讨论交流。