mybatis快速入门:

参考博主 “看尽事态炎凉”

mybatis快速入门:

1、什么是mybatis

mybatis支持定制化SQL、存储过程以及高级映射的优秀的持久层框架。Mybatis几乎避免了所有的JDBC代码和手工设置参数以及抽取结果集。Mybatis使用简单的xml或注解来配置和映射基本体,将接口和Java的POJOs映射成数据库中的记录。

2、特点

支持定制sql、存储过程、以及高级映射

实现自动对SQL的参数设置

实现自动对结果集进行解析和封装

通过xml或者注解进行配置和映射,大大减少代码量

数据源的连接信息通过配置文件进行配置

3、和jdbc及hibernate进行对比

可以发现,Mybatis是对JDBC进行了简单的封装,帮助用户进行SQL参数的自动设置,以及结果集与java对象的自动映射。与hibernate相比,配置更加简单、灵活、执行效率高、但是正因为如此,所以没有实现完全自动化,需要手写SQL,这是优点也是缺点。

4、整体架构

(1)配置文件

全局配置文件:mybatis-config.xml 作用:配置数据源,引入映射文件

映射文件: XxMapper.xml 作用:配置sql语句、参数、结果集封装类型等等

现在全局配置文件一般都是换成了配置文件application-mybatis.properties

(2)SqlSeeesionFactory

作用:获取SqlSession

通过newSqlSessionFactoryBuilder().build(inputStream)来构建,inputStream读取配置文件的io流

(3)SqlSession

作用:执行CRUD操作

(4)Executor

执行器,SqlSession通过调用它来完成具体的CRUD

他是一个接口,提供了两种实现:缓存的实现、数据库的实现

(5)Mapped Statement

在映射文件中配置,包含3部分内容:

具体的sql,sql执行所需要的参数类型,sql执行结果的封装类型

参数类型和结果集封装类型包括3种:HashMap、基本数据类型、pojo

5、mybatis-config.xml配置

mybatis-config.xml讲究严格的顺序,具体顺序遵循文档的顺序

*configuration配置

​ properties 属性

​ settings 设置

​ typeAliases 类型命名

​ typeHandlers 类型处理器

​ objectFactory 对象工厂

​ plugins 插件

​ environments 环境

​ *environment 环境变量

​ *transactionManager 事务管理器

​ *dataSource 数据源

​ databaseldProvider 数据库厂商标识

​ mappers 映射器

6、properties属性读取外部资源

通过properties引入外部资源文件之后,就可以通过¥{xxx}的方式使用资源文件里的参数了

7、typeAliases

使用类的全路径配置别名

and user_name like '%' #{userName} '%' ```

(2)choose、when、otherwise

<select id="findUser" parameterType="com.offcn.pojo.User" resultType="User">
  select  * from user where sex = 1
  <!--
      choose:条件选择
      when:test-判断条件,一旦有一个when成立,后续的when都不再执行
      otherwise:所有的when都不成立时才会执行
  -->

  <choose>
    <when test="userName!=null and userName.trim()!=''">and user_name like '%' #{userName} '%'</when>
    <when test="age!=null">and age = #{age}</when>
    <otherwise>and user_name = 'zhangsan' </otherwise>
  </choose>
</select>

(3)where、set

<select id="findUser" parameterType="com.offcn.pojo.User" resultType="User">
  select  * from user
  <!--
      自动添加where关键字
      有一定的纠错功能,去掉sql语句块之前多余的一个and|or
      通常结合if或者choose使用
  -->
  <where>
    <if test="userName!=null and userName.trim()!=''">and user_name like '%' #{userName} '%'</if>
    <if test="age!=null">and age = #{age}</if>
  </where>
</select>

(4)foreach

<select id="findUser" parameterType="com.offcn.pojo.User" resultType="User">
  select  * from user where id in
  <!--
      foreach:遍历集合
      collection:接收的集合参数
      item:遍历的集合中的一个元素
      separator:分隔符
      open:以什么开始
      close:以什么结束
  -->
  <foreach collection="ids" item="id" separator="," open="(" close=")">
    #{id}
  </foreach>
</select>

总结:

*if判断 test-判断条件,OGNL表达式

*Choose when(判断,test,一旦一个when成立,后续不再执行)otherwise(所有when都不成立,才会执行)

*where:添加where关键字,去掉动态SQL之前多余的一个and|or

*Set:添加set关键字,去掉动态sql之后多余的一个逗号

*Foreach:collection-接收集合参数 item:遍历的集合中的一个元素 separator:分隔符 open:以什么开始 close:以什么结束

15、mybatis中resultType和resultMap该如何选择

resultType自动映射结果集

resultMap自定义映射结果集 (一般常用)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值