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
- 动态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来配置映射语句