当前位置:
首页 >
MyBatis【钢镚核恒】
发布时间:2023/12/20
30
豆豆
生活随笔
收集整理的这篇文章主要介绍了
MyBatis【钢镚核恒】
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
MyBatis
简介
- MyBatis是优秀的持久层框架, 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。
- MyBatis使用XML将SQL与程序解耦,便于维护
- MyBatis学习简单,执行高效,是JDBC的延伸
拓展:
持久化:即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。
持久层:完成持久化工作的代码块 . ----> dao层 【DAO (Data Access Object) 数据访问对象】
官方文档:https://mybatis.org/mybatis-3/zh/index.html
入门
SqlSessionFactory
- SqlSessionFactory是MyBatis的核心对象
- 用于初始化MyBatis,创建SqlSession对象
- 保证SqlSessionFactory在应用中全局唯一
SqlSession
- SqlSession是MyBatis操作数据库的核心对象
- SqlSession使用JDBC方式与数据库交互
- SqlSession对象提供了数据表CRUD对应方法
配置
- properties(属性)
- settings(设置)
- typeAliases(类型别名)
- typeHandlers(类型处理器)
- objectFactory(对象工厂)
- plugins(插件)
- environments(环境配置)
- environment(环境变量)
- transactionManager(事务管理器)
- dataSource(数据源)
- environment(环境变量)
- databaseIdProvider(数据库厂商标识)
- mappers(映射器)
映射文件
顶级元素
- cache – 该命名空间的缓存配置。
- cache-ref – 引用其它命名空间的缓存配置。
- resultMap – 描述如何从数据库结果集中加载对象,是最复杂也是最强大的元素。
- parameterMap – 老式风格的参数映射。此元素已被废弃,并可能在将来被移除!请使用行内参数映射。文档中不会介绍此元素。
- sql – 可被其它语句引用的可重用语句块。
- insert – 映射插入语句。
- update – 映射更新语句。
- delete – 映射删除语句。
- select – 映射查询语句。
Select 元素的属性
<selectid="selectPerson"parameterType="int"parameterMap="deprecated"resultType="hashmap"resultMap="personResultMap"flushCache="false"useCache="true"timeout="10"fetchSize="256"statementType="PREPARED"resultSetType="FORWARD_ONLY">Insert, Update, Delete 元素的属性
<insertid="insertAuthor"parameterType="domain.blog.Author"flushCache="true"statementType="PREPARED"keyProperty=""keyColumn=""useGeneratedKeys=""timeout="20"><updateid="updateAuthor"parameterType="domain.blog.Author"flushCache="true"statementType="PREPARED"timeout="20"><deleteid="deleteAuthor"parameterType="domain.blog.Author"flushCache="true"statementType="PREPARED"timeout="20">sql片段:这个元素可以用来定义可重用的 SQL 代码片段
<sql id="userColumns"> ${alias}.id,${alias}.username,${alias}.password </sql>结果映射:给数据库属性取别名
<resultMap id="userResultMap" type="User"><id property="id" column="user_id" /><result property="username" column="user_name"/><result property="password" column="hashed_password"/> </resultMap> <select id="selectUsers" resultMap="userResultMap">select user_id, user_name, hashed_passwordfrom some_tablewhere id = #{id} </select>两种传值方式
- ${} 文本替换,未经任何处理对SQL文本替换
- #{} 预编译传值,使用预编译传值可以预防SQL注入
工作流程图
日志
- 日志文件是用于记录系统操作事件的记录文件或文件集合
- 日志保存历史数据,是诊断问题以及理解系统活动的重要依据
动态 SQL
动态 SQL 是 MyBatis 的强大特性之一。
- if
- choose (when, otherwise)
- trim (where, set)
- foreach
缓存
- —级缓存默认开启,缓存范围SqISession会话
- 二级缓存手动开启,属于范围Mapper Namespace
二级缓存运行规则:
- 二级开启后默认所有查询操作均使用缓存
- 写操作commit提交时对该namespace缓存强制清空
- 配置useCache=false可以不用缓存
- 配置flushCache=true代表强制清空缓存
开启二级缓存:
<cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/>ResultMap
一对多对象关联查询
<resultMap id="rm" type="User"><id column="id" property="id"></id><!-- collection说明 :property 为User下的一对多对象, select 调用接口的方法进行查询,column="id" 是传入查询的参数--><collection property="dogs" select="dogDao.getDog" column="id"></collection> </resultMap> <select id="oneToMany" resultMap="rm">select * from user </select>多对一对象关联查询
<resultMap id="rm" type="Dog"><id column="uid" property="uid"></id><!-- association :property 为Dog下的多对一对象 --><association property="user" select="userDao.queryUser" column="uid"></association> </resultMap> <select id="manyToOne" resultMap="rm">select * from dog </select>PageHelper
- maven引入PageHelper与jsqlparser
- mybatis-config.xml增加Plugin配置
- 代码中使用PageHelper.startPage() 自动分页
常用注解
- @lnsert
- @Update
- @Delete
- @Select
- @Result,对应<id> <result>,字段映射
- @Results, 对应<resultMap>,结果映射
- @Param,参数映射
Mybatis-plus
- MyBatis-Plus(简称MP)是一个MyBatis的增强工具
- 自动实现Mapper CRUD操作,极致提高数据库开发效率
- MP在MyBatis的基础上只做增强不做改变
整合三部曲:
核心注解
- @TableName -将实体类与表名映射
- @Tableld -说明对应属性是表的主键
- @TableField -设置属性与列名的对应关系
总结
以上是生活随笔为你收集整理的MyBatis【钢镚核恒】的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 字符设备驱动基础篇4——字符设备驱动读写
- 下一篇: 服务器升级虚拟化,刀片服务器内置虚拟化