Mybatis 简单用例

MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs (Plain Old Java Objects, 普通的 Java 对象)映射成数据库中的记录。

在 MyBatis 中,XML 配置文件是用来定义 SQL 映射和结果的。它通常包含以下几个部分:

  1. mapper:定义 SQL 映射,包括 SQL 语句、参数类型、返回值类型等。
  2. resultMap:定义结果集的映射规则,包括列名、属性名、类型等。
  3. typeAliases:定义别名,用于简化 Java 类型名称。

下面是一个 MyBatis 的 XML 配置文件的例子:

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
<mapper namespace="com.example.mapper.UserMapper">  <!-- 插入数据 -->  <insert id="insertUser" parameterType="com.example.model.User">  INSERT INTO user (username, password, email)  VALUES (#{username}, #{password}, #{email})  </insert>  <!-- 根据ID查询数据 -->  <select id="getUserById" parameterType="int" resultType="com.example.model.User">  SELECT * FROM user WHERE id = #{id}  </select>  <!-- 查询所有数据 -->  <select id="getAllUsers" resultType="com.example.model.User">  SELECT * FROM user  </select>  <!-- 更新数据 -->  <update id="updateUser" parameterType="com.example.model.User">  UPDATE user SET username = #{username}, password = #{password}, email = #{email} WHERE id = #{id}  </update>  <!-- 删除数据 -->  <delete id="deleteUserById">  DELETE FROM user WHERE id = #{id}  </delete>  
</mapper>

在这个例子中,我们定义了一个 UserMapper,它包含了一些基本的 CRUD 操作。这些操作通过 XML 中的 <insert><select><update><delete> 标签来定义。这些标签的属性如 idparameterType 和 resultType 是必要的。id 是唯一标识符,parameterType 是传入参数的类型,resultType 是返回结果的类型。其他一些属性如 parameterMapresultMapsql 等则是可选的。

1. 参数映射

在上述例子中,我们使用了parameterType属性来指定传入参数的类型。MyBatis 支持多种类型的参数映射,包括:

  • 基本类型:如 int, long, String 等。
  • JavaBean 或 POJO(Plain Old Java Objects):可以为多个列映射到一个 JavaBean 属性。
  • Map:传入一个包含键值对的 Map,其中键是列名,值是对应的数据。
  • 数组或集合:可以传入数组或 List 类型的参数。

2. 结果映射

在 SQL 查询中,可以使用resultType属性来指定返回结果的类型。MyBatis 支持多种结果映射方式:

  • 单个列映射到单一属性:直接映射列名到属性。
  • 单个列映射到多个属性:例如,将一个字符串列分割成多个部分并映射到多个属性。
  • 多个列映射到单个属性:例如,将多个字符串列合并为一个长字符串。
  • 多个列映射到多个属性:这是默认的结果映射方式,直接将列名映射到属性名。

3. 结果映射高级特性

  • resultMap:更复杂的映射规则可以使用 resultMap 来定义,它可以包含列名、属性名、类型、结果类型等详细信息。
  • association 和 collection:这些标签可以用于处理一对一、一对多或多对多关系。

4. XML 配置文件的位置

MyBatis 的 XML 配置文件通常放在项目的资源文件夹下,例如 src/main/resources。文件名通常为 mybatis-config.xml,但可以根据项目需要自定义。

5. 动态 SQL

MyBatis 还支持动态 SQL,允许根据条件构建不同的 SQL 语句。例如,可以使用 <if><choose><when><otherwise> 等标签来根据条件动态生成 SQL 语句

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/648844.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Linux基础开发工具---vim]关于vim的介绍、vim如何配置及vim的基本操作方法

一、vim及其三种模式的简单介绍 Vim是一个类似于Vi的文本编辑器&#xff0c;不同的是vim是vi的升级版本&#xff0c;它不仅兼容vi的所有指令&#xff0c;而且还有一些新的特性在里面,如多级撤销、多窗口操作、崩溃后也可以恢复、增加了稳定性、关键字自动补全、上下文自动补全等…

系统架构14 - 软件工程(2)

需求工程 软件需求两大过程三个层次业务需求(business requirement)用户需求(user requirement)功能需求 (functional requirement)非功能需求 概述活动阶段需求获取基本步骤获取方法 需求分析三大模型数据流图数据字典DD 需求定义需求验证需求管理需求基线变更控制过程变更控制…

【一】从零到1设计一个丧葬行业小程序

初步构想 背景&#xff1a;丈母娘家开了一家丧葬行业的门面&#xff0c;每年就过年几天开一下&#xff0c;但是这样也导致每到过年就必须守在门面&#xff0c;无法过一个轻松的年&#xff0c;所以就想做一款小程序&#xff0c;只用于本地乡镇里进行推广。 主营&#xff1a;烟…

基于卡尔曼滤波的平面轨迹优化

文章目录 概要卡尔曼滤波代码主函数代码CMakeLists.txt概要 在进行目标跟踪时,算法实时测量得到的目标平面位置,是具有误差的,连续观测,所形成的轨迹如下图所示,需要对其进行噪声滤除。这篇博客将使用卡尔曼滤波,对轨迹进行优化。 优化的结果为黄色线。 卡尔曼滤波代码…

SQL查询数据库环境(dm8达梦数据库)

SQL查询数据库环境dm8达梦数据库 环境介绍 环境介绍 某些环境没有图形化界面,可以使用sql语句查询达梦数据库环境情况 SELECT 实例名称 数据库选项,INSTANCE_NAME 数据库选项相关参数值 FROM V$INSTANCE UNION ALL SELECT 授权用户,(SELECT AUTHORIZED_CUSTOMER FROM V$LICE…

对话框与多窗体设计 —— 自定义对话框及其调用

3.2 自定义对话框及其调用3.3 Splash与登录窗口 3.2 自定义对话框及其调用 在一个应用程序设计中&#xff0c;为了实现一些特定的功能&#xff0c;必 须设计自定义对话框。自定义对话框的设计一般从 QDialog继承&#xff0c;并且可以采用UI设计器可视化地设计对 话框。对话框的…

vivado DDS学习

实现DDS通常有两种方式&#xff0c;一种是读取ROM存放的正弦/余弦信号的查表法&#xff0c;另一种是用DDS IP核。这篇学习笔记中&#xff0c;我们要讲解说明的是VIVADO DDS IP核的应用。 目前本篇默认Phase Generator and SIN/COS LUT&#xff08;DDS&#xff09;的standard模式…

Python NLP:自然语言入门(Python和Java)

自然语言处理&#xff08;Natural Language Processing&#xff0c;NLP&#xff09;是一种涉及将计算机与人类语言进行交互的技术。它涉及将自然语言文本转换为计算机可以理解和处理的形式&#xff0c;以实现各种任务&#xff0c;如文本分类、情感分析、机器翻译等。 Python和…

【SpringCloud Nacos】 微服务治理介绍及Nacos引入初体验

文章目录 前言服务治理介绍什么是服务治理1、服务发现2、服务配置3、服务健康检测 常见的注册中心ZookeeperEurekaConsulNacos Nacos 简介Nacos 实战入门搭建nacos环境1、安装nacos2、配置nacos3、访问nacos 将商品微服务注册到 nacos1、在 pom. xml 中添加 nacos 的依赖2、在主…

npm设置源(原淘宝源域名已过期)

今天打包机器报错&#xff0c; Couldnt find package "antd-mobile2.3.4" required by "neo-ui-mf-base1.0.41" on the "npm" registry. 找不到antd mobile的包&#xff0c;查看源发现淘宝域名npm.taobao.org 和 registry.npm.taobao.org 域名…

spring cloud之分布式事务

写在前面 1&#xff1a;分布式事务介绍 参考MySQL之分布式事务 。 2&#xff1a;seata实战 架构图&#xff1a; 可以看到seata在这里作为协调者的角色&#xff0c;协调所有事务的提交以及回滚&#xff0c;其中seata使用MySQL存储每个分支事务的执行状态信息&#xff0c;以…

gitlab设置/修改克隆clone地址端口

最近由于公司要停测试库云服务器? 什么?要停测试库服务器??? 是的! 你没听错。 真是醉了,多大的集团,为了省钱,也真是拼了, 作为开发人员,没有测试服务器,犹如断臂之人。 所以,在之前搭建环境的时候都没有写文档,今天算是弥补上,以后都可以作为参考了, …

MySQL和Redis的事务有什么异同?

MySQL和Redis是两种不同类型的数据库管理系统&#xff0c;它们在事务处理方面有一些重要的异同点。 MySQL事务&#xff1a; ACID属性&#xff1a; MySQL是一个关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;支持ACID属性&#xff0c;即原子性&#xff08;Ato…

云原生管理工具dashboard--Kube Sphere(k8s)和Portainer(Docker)安装

Kube Sphere 安装 推荐直接使用All in One 安装模式安装&#xff0c;最为简单&#xff0c;同时安装kube Sphere也支持同时安装好k8s的环境 官方安装网址如下&#xff0c;写的很详细&#xff0c;也贴心的准备了中国地区安装的网络问题应对方式 在 Linux 上以 All-in-One 模式…

23种设计模式,你学废了嘛?【建议收藏起来】

23种经典设计模式共分为3种类型&#xff0c;分别是创建型、结构型和行为型。 今天&#xff0c;我们把这3种类型分成3个对应的小模块&#xff0c;逐一带你回顾一下每一种设计模式的原理、实现、设计意图和应用场景。 还是那句话&#xff0c;如果你看了之后&#xff0c;感觉都有…

C++实现模版模式 + 创建者模式的demo

前言 最近需要写gstreamer的项目&#xff0c;其中推流模块&#xff0c;可能设计到有可能会有很多种管道&#xff0c;比如相机编码到RTP&#xff0c;相机编码到RTSP&#xff0c;相机编码到UDP视频流等&#xff0c;如果只有这么几种就算了&#xff0c;以后还可能会有许多可能得扩…

Kafka3学习笔记

文章目录 一、Kafka概述和入门1、Kafka概述1.1 定义1.2 消息队列1.3 Kafka 基础架构 2、Kafka 快速入门2.1 安装部署2.2 集群启停脚本 3、Kafka 命令行操作3.1 Topic命令行操作3.2 生产者命令行操作3.3 消费者命令行操作 二、Kafka核心概念详解1、Kafka 生产者1.1 生产者消息发…

如何用chatgpt提升工作效率

使用ChatGPT可以提升工作效率的几种方式&#xff1a; 快速撰写文档&#xff1a;ChatGPT可以根据提供的关键信息&#xff0c;快速生成整篇文章。这样能够节省大量时间和精力。自动生成报告&#xff1a;无论是市场分析报告还是销售数据报告&#xff0c;只需提供关键数据和信息&a…

MySQL 多表查询

文章目录 多表关系一对多多对多一对一 查询合并查询&#xff08;笛卡尔积&#xff0c;会展示所有组合结果&#xff09;&#xff1a;内连接查询外连接查询自连接查询联合查询 union, union all子查询单行子查询列子查询行子查询表子查询 :::success 多表查询&#xff0c;也称为…

如何在 Python 中将语音转换为文本

一、说明 学习如何使用语音识别 Python 库执行语音识别&#xff0c;以在 Python 中将音频语音转换为文本。想要更快地编码吗&#xff1f;我们的Python 代码生成器让您只需点击几下即可创建 Python 脚本。现在就现在试试&#xff01; 二、语言AI库 2.1 相当给力的转文字库 语音…