Mybatis 使用汇总(介绍,功能,连接池,日志,注解,XML映射文件)

大树的Blog / 2023-06-26 / 原文

Mybatis 介绍
Mybatis 功能
Mybatis 连接池
mybatis日志
Mybatis 注解
Mybatis XML 映射文件

01.Mybatis 是一款优秀的持久层框架(DAO),它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
官网:https://mybatis.org/mybatis-3/zh/index.html

02.Mybatis 功能

1. 数据库连接四要素(驱动、链接、用户名、密码),都配置在springboot默认的配置文件
application.properties中
2. 查询结果的解析及封装,由mybatis自动完成映射封装,我们无需关注
3.在mybatis中使用了数据库连接池技术(Hikari(springboot默认)),从而避免了频繁的创建连接、销毁连接而带来的资源浪费

4.使用了mybatis 开发持久层程序操作数据库,只需关注:1.连接字符串,mapper接口
4.使用了mybatis 开发持久层程序操作数据库,只需关注:1.连接字符串,mapper接口

5.数据库连接池技术:
5.1 Druid(德鲁伊)Druid连接池是阿里巴巴开源的数据库连接池项目功能强大,性能优秀,是Java语言最好的数据库连接池之一
5.2 Hikari(springboot默认



6.开起mybatis日志:
   application.yml文件开启mybatis日志,可以在运行时在控制台查看日志:

configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

  1. 动态SQL-if,where,set,foreach, :定义可重用的SQL片段, :通过属性refid,指定包含的SQL片段
    动态SQL-if,where,set,foreach, :定义可重用的SQL片段, :通过属性refid,指定包含的SQL片段
<select id="list" resultType="com.it.pojo.Emp">
 select * from emp
<where>
<!-- if做为where标签的子元素 -->
<if test="name != null">
 and name like concat('%',#{name},'%')
</if>
<if test="gender != null">
 and gender = #{gender}
</if>
<if test="begin != null and end != null">
 and entrydate between #{begin} and #{end}
 </if>
</where>
 order by update_time desc
</select>


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.itheima.mapper.EmpMapper">
<!--更新操作-->
<update id="update">
 update emp
<!-- 使用set标签,代替update语句中的set关键字 -->
<set>
<if test="username != null">
 username=#{username},
</if>
<if test="name != null">
 name=#{name},
</if>
<if test="gender != null">
 gender=#{gender},
</if>
<if test="image != null">
 image=#{image},
</if>
<if test="job != null">
 job=#{job},
</if>
<if test="entrydate != null">
 entrydate=#{entrydate},
</if>
<if test="deptId != null">
 dept_id=#{deptId},
</if>
<if test="updateTime != null">
 update_time=#{updateTime}
</if>
</set>
 where id=#{id}
</update>
</mapper>


<!--删除操作-->
<delete id="deleteByIds">
 delete from emp where id in
<foreach collection="ids" item="id" separator="," open="("
close=")">
 #{id}
</foreach>
</delete>

03.在Mybatis中使用XML映射文件方式开发,需要符合一定的规范:

1. XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下
(同包同名)
2. XML映射文件的namespace属性为Mapper接口全限定名一致
3. XML映射文件中sql语句的id与Mapper接口中的方法名一致,并保持返回类型一致。

结论:
使用Mybatis的注解,主要是来完成一些简单的增删改查功能。如果需要实现复杂的SQL功能,
建议使用XML来配置映射语句