MyBatis 映射器

news/2024/10/22 8:26:35/

目录

1. 什么是映射器

 2. 映射器的基本结构

 3. 映射器接口示例

4. XML 映射文件示例

 5. 使用映射器

 6. 配置示例

MyBatis 是一个 Java 持久层框架,它支持定制 SQL、存储过程及先进的映射。MyBatis 的核心是它的映射器(Mapper)。

1. 什么是映射器

映射器是 MyBatis 的核心组件之一,它用来定义 SQL 语句与 Java 对象之间的映射关系。通常映射器会用 XML 文件或者注解的方式来指定。

 2. 映射器的基本结构

一个典型的 MyBatis 映射器包含以下几个部分:

(1)映射器接口:定义数据库操作的方法。

(2)XML 映射文件:相应的 XML 配置文件,包含 SQL 语句和其对应的 Java 方法。

 3. 映射器接口示例
java">public interface UserMapper {User getUserById(int id);List<User> getAllUsers();void insertUser(User user);void updateUser(User user);void deleteUser(int id);
}
4. XML 映射文件示例
java"><mapper namespace="com.example.mapper.UserMapper"><select id="getUserById" parameterType="int" resultType="com.example.model.User">SELECT * FROM users WHERE id = #{id}</select><select id="getAllUsers" resultType="com.example.model.User">SELECT * FROM users</select><insert id="insertUser" parameterType="com.example.model.User">INSERT INTO users (username, password) VALUES (#{username}, #{password})</insert><update id="updateUser" parameterType="com.example.model.User">UPDATE users SET username = #{username}, password = #{password} WHERE id = #{id}</update><delete id="deleteUser" parameterType="int">DELETE FROM users WHERE id = #{id}</delete>
</mapper>
 5. 使用映射器

在 MyBatis 中使用映射器一般需要以下几个步骤:

(1)配置 MyBatis:包括数据源和映射器的 XML 文件。
(2)获取 SqlSession:通过 SqlSessionFactory 获取 SqlSession。
(3)调用映射器方法:通过 SqlSession 获取映射器接口的实例,并调用相应的方法。

 6. 配置示例
java"><configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mydb"/><property name="username" value="root"/><property name="password" value="password"/></dataSource></environment></environments><mappers><mapper resource="com/example/mapper/UserMapper.xml"/></mappers>
</configuration>

http://www.ppmy.cn/news/1501979.html

相关文章

科技云报道:算网筑基AI注智,中国联通如何讲出AI时代的“新故事”?

科技云报道原创。 AI从未停止进化&#xff0c;也从未停止给人类带来惊喜。 从ChatGPT代表的文生文、Dall-E代表的文生图&#xff0c;到Sora代表的文生视频&#xff0c;Suno为代表的文生音乐&#xff0c;生成式AI的“暴力美学”持续突破内容生产的天花板&#xff0c;大模型技术…

视频主题Qinmei 3.0视频站源码_WordPress影视视频主题/附详细安装教程

Qinmei 3.0主题主要是将 wordpress 改造成纯 api 的站点&#xff0c;以便实现前后端分离的技术栈&#xff0c;目前的进度已经大致完成&#xff0c;唯一的问题就是需要安装 JWT token 插件。 功能介绍&#xff1a; 支持豆瓣以及 bangumi 的一键获取信息, 豆瓣 api 目前使用的是…

Spring缓存注解

Spring缓存注解 EnableCaching | 来启动缓存注解Cached | 用来表示某一个方法的结果可以被缓存 Cached(name “testCache:id1:”, key “#testId”, cacheType CacheType.REMOTE, localLimit CustomerConstants.DEFAULT_LIMIT, expire 1800)方法方法上。 #相关参数&#…

Internxt:适用于Linux开源安全云存储平台

有无数的云存储平台为您的文件提供安全可靠的存储空间。可在 Linux 上安装的热门云存储应用程序包括Dropbox、Nextcloud和Google Drive&#xff0c;遗憾的是&#xff0c;后者迄今为止不提供 Linux 客户端。 其他自托管选项包括OwnCloud、Pydio Cells、Seafile、Resilio和Synct…

解决Swagger异常:AbstractSerializableParameter的DefaultValue问题

在开发过程中&#xff0c;我们可能会遇到Swagger页面打开时后台报错i.s.m.parameters.AbstractSerializableParameter.getExample(421) - Illegal DefaultValue null for parameter type integer java.lang.NumberFormatException: For input string: ""的问题。具体…

浅谈C语言整型类数据在内存中的存储

1、整型类数据 C语言中的整型类数据都归类在整型家族中&#xff0c;其中包括&#xff1a;char、short、int、long、long long这5个大类&#xff0c;而每个大类中又分为两类signed和unsigned,这些都是C语言中的内置类型。以下重点基于char和int这两种类型的数据进行阐述&#x…

搭建自动化 Web 页面性能检测系统 —— 部署篇

作为一个前端想去做全栈的项目时&#xff0c;可能第一个思路是 node vue/react。一开始可能会新建多个工程目录去实现&#xff0c;假设分别为 web 和 server&#xff0c;也许还有管理后台的代码 admin&#xff0c;那么就有了三个工程的代码。此时为了方便管理就需要在远程仓库…

实现一个全栈模糊搜索匹配的功能

提供一个全栈实现的方案&#xff0c;包括 Vue 3 前端、Express 后端和 MySQL 数据库的分类模糊搜索功能。让我们逐步来看&#xff1a; 1. 数据库设计 (MySQL) 首先&#xff0c;我们需要一个存储分类的表&#xff1a; CREATE TABLE categories (id INT AUTO_INCREMENT PRIMAR…