MyBatis 框架详解 (一)

朴灿烈づ我的快乐病毒、 2022-05-16 02:59 361阅读 0赞

持久层框架:直接操作对象 将查询结果转换成对象集合 把对象保存到数据库 你不用写太多sql 语句(容易出错,不利于面向对象)

MyBatis:是一个持久层的框架,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

构建工厂模式 ,拿到数据源,拿到基本配置文件通过数据源拿到session (专门操作数据库)

#

引入jar包:

1.要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于 classpath 中即可。

2.maven构建项目:将以下加到pom.xml中;

70

从 XML 中构建 SqlSessionFactory

xml只是一种 获取SqlSessionFactory方式 ( SqlSesionFactoryy有好几个来源 xml/properties文件/Configuration实例);

可以使用classpath路径下的资源文件进行配置,也可以使用文件流来得到路径;MyBatis 包含一个名叫 Resources 的工具类,它包含一些实用方法,可使从 classpath 或其他位置加载资源文件更加容易。

70 1

mybatis-config.xml配置文件

mybatis核心配置(获取数据库连接的数据源+事务管理器—管理事务的)Configuration通过Resources的方式读取配置文件中信息(SqlSessionFactoryBuilder 中的方法可以new 一个Configuration 实例去加载配置文件的内容 后生成SqlSessionFactory)

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  3. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  4. <configuration>
  5. <typeAliases>
  6. <typeAlias alias="student" type="com.spring.entry.Student" />
  7. </typeAliases>
  8. <environments default="development">
  9. <environment id="development">
  10. <transactionManager type="JDBC" />
  11. <dataSource type="POOLED">
  12. <property name="driver" value="com.mysql.jdbc.Driver" />
  13. <property name="url" value="jdbc:mysql://127.0.0.1/test" />
  14. <property name="username" value="root" />
  15. <property name="password" value="123456" />
  16. </dataSource>
  17. </environment>
  18. </environments>
  19. <!--所有的映射注册-->
  20. <mappers>
  21. <mapper resource="com/spring/mybatis/StudentMapper.xml" />
  22. <mapper class="com.spring.mybatis.TeacherMapper"/>
  23. </mappers>
  24. </configuration>

每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为中心的SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先定制的 Configuration 的实例构建出 SqlSessionFactory 的实例。

不使用 XML 构建 SqlSessionFactory

直接用Java程序创建Configuration实例 Configuration添加了映射器类 (mappercalss) 含 SQL 映射语句的注解从而避免了 XML 文件的依赖(xml里面存sql 所有的sql语句都可以在xml); new 事务管理器

70 2

从 SqlSessionFactory 中获取 SqlSession:

SqlSession 完全包含了面向数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句; opensession相当于打开了一个连接;

通过session的方法 相当于直接拿到了一个实体对象(没有任何封装)

70 3

对于给定语句能够合理描述参数和返回值的接口(比如说StudentMapper.class)—-你可以自定义session的方法(selectstudentmapper) 利用接口的方式进行可封装;

70 4

sql查出结果跟你的实体进行匹配 通过id (方法名)调用sql 返回一个对象类型

使用指定的完全限定名“org.mybatis.example.BlogMapper.selectBlog”来调用映射语句命名空间唯一;这个命名可以直接映射到在命名空间中同名的 Mapper 类,并将已映射的 select 语句中的名字、参数和返回类型匹配成方法;

利用命名空间直接调用 实体类.calss

  1. BlogMapper mapper = session.getMapper(BlogMapper.class);
  2. Blog blog = mapper.selectBlog(101);

#

映射类:用注解替换xml形式(第三种)

映射器是一个你创建来绑定你映射的语句的接口(StudentMapper)。

映射器实例(Mapper Instances):从 SqlSession 中获得的,任何映射器实例的最大作用域是和请求它们的 SqlSession 相同的,最好把映射器放在方法作用域(method scope)内;

xml 对应了实体类 id即类中的方法 输出类型就是该类的类型

session(可操作mapper文件)

执行:session——->mapper(固定类) 【注解@/xml<….id>】———>mapper 去增删改查

映射器(mappers)

告诉 MyBatis 到哪里去找映射文件,可以使用相对于类路径的资源引用, 或完全限定资源定位符(包括 file:/// 的 URL),或类名和包名等.

70 5

Mapper XML 文件:

MyBatis 的真正强大在于它的映射语句,由于它的异常强大,映射器的 XML 文件就显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码。MyBatis 就是针对 SQL 构建的。

70 6

70 7

select:预处理方面优势‘??’

70 8

标签内置属性

70 9

70 10

#

Result Maps(解决联合查询问题)

resultMap 元素是 MyBatis 中最重要最强大的元素。它可以让你从 90% 的 JDBC

ResultSets 数据提取代码中解放出来, 并在一些情形下允许你做一些 JDBC 不支持的事情

70 11

返回值为HashMap类型,HashMap 不是一个很好的领域模型你的程序更可能会使用 JavaBean 或 POJO(Plain Old Java Objects,普通 Java 对象)作为领域模型。 MyBatis 对两者都支持(对应到对象上)

解决字段名和属性名不匹配的问题

1. 类别名

这些情况下,MyBatis 会在幕后自动创建一个 ResultMap,再基于属性名来映射列到 JavaBean 的属性上。如果列名和属性名没有精确匹配,可以在 SELECT 语句中对列使用别名(这是一个 基本的 SQL 特性)来匹配标签。比如:

  1. <select id="selectUsers" resultType="User">
  2. select
  3. user_id as "id",
  4. user_name as "userName",
  5. hashed_password as "hashedPassword"
  6. from some_table
  7. where id = #{id}
  8. </select>

2.resultMap :解决列名不匹配的另外一种方式(对象里的对象 1:n关系)

70 12

#

动态 SQL

1.判断(sql拼接的情况)true—拼接 false—不拼接

70 13

2.遍历:

70 14

ps:mybatis框架功能强大,我们需要了解其内部原理,更好的运用它!

mybatis官方文档:http://www.mybatis.org/mybatis-3/zh/index.html

发表评论

表情:
评论列表 (有 0 条评论,361人围观)

还没有评论,来说两句吧...

相关阅读

    相关 MyBatis-Plus 框架详解

    MyBatis-Plus 是 MyBatis 的一个插件,它是在 MyBatis 的基础上进行了扩展和增强,目的是简化数据访问层的开发以及提高代码的可维护性,同时也提供了很多便

    相关 Mybatis 框架详解

    MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程、高级映射和事务等功能,是 Java Web 开发中最受欢迎的 ORM 框架之一。MyBatis 的特点是