MyBatis入门
一款半自动的ORM持久层框架。
ORM : Object Relation Mapping 对象关系映射。在Java对象和数据库的关系模型之间建立一种对应关系。
半自动:手动编写SQL语句。提供了输入映射和输出映射,可以方便地进行SQL参数设置,以及结果集封装。
持久层:可以立即保存在磁盘上,在这里可以理解为与数据库相关操作。
Hibernate : 全自动,只需定义ORM映射关系,就可直接进行CRUD操作。
步骤
-
编写全局配置文件
-
编写mapper映射文件
-
加载全局配置文件,生成SqlSessionFactory
-
创建SqlSession,调用mapper映射文件中的SQL语句来执行CRUD操作
例子
创建数据库
创建maven项目
导入依赖jar包
<dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.10</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.6</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.12</version> <scope>provided</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> </dependency> </dependencies>
根据数据表创建POJO类
import lombok.*;
@Getter @Setter @NoArgsConstructor @AllArgsConstructor @ToString public class Student {
} 编写mapper映射文件(编写SQL)
<!-- StudentMapper.xml --> <?xml version="1.0" encoding="UTF-8" ?>
<mapper namespace="test"> <select id="findAll" resultType="com.yogurt.po.Student"> SELECT * FROM student; </select>
</mapper>
编写数据源properties文件
编写全局配置文件(主要是配置数据源信息)
db.url=jdbc:mysql://192.168.183.129:3306/yogurt?characterEncoding=utf8 db.user=root db.password=root db.driver=com.mysql.jdbc.Driver
编写全局配置文件(主要是配置数据源信息)
<?xml version="1.0" encoding="UTF-8" ?>
</configuration>
编写dao类
测试
注意:
1.编写mapper.xml,书写SQL,并定义好SQL的输入参数,和输出参数 2.编写全局配置文件,配置数据源,以及要加载的mapper.xml文件 3.通过全局配置文件,创建SqlSessionFactory 4.每次进行CRUD时,通过SqlSessionFactory创建一个SqlSession 5.调用SqlSession上的selectOne,selectList,insert,delete,update等方法,传入mapper.xml中SQL标签的id,以及输入参数 6.全局配置文件中各个标签按以下顺序配置(因为mybatis加载配置文件的源码按此顺序解析)
<configuration> <!-- 配置顺序如下 properties
<!--一般将数据源的信息单独放在一个properties文件中,然后用这个标签引入,在下面environment标签中,就可以用`${}`占位符快速获取数据源的信息-->
</configuration>
别名映射
起因:parameterType 和 resultType 的值 需要使用类的完全限定名 太麻烦 希望使用 简短的名字来替代 类的完全限定名
清空某个表
truncate 某个;
侵入式延迟 积极加载
侵入式延迟 访问主对象及主对象里面的属性时,不光会加载主对象(即从数据库中查询主对象的信息),还会一同加载关联对象。 积极加载
深度延迟 访问主对象属性时,只加载主,只有当访问关联对象的属性时,才会去加载关联对象。 按需加载
映射配置文件中子查询设置fetchType
fetchType=“eager” 不支持懒加载
fetchType=“lzsy” 支持懒加载
__EOF__

本文链接:https://www.cnblogs.com/3-DG/p/17832542.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现