Mybatis 41_构造器映射及使用注解完成构造器映射

41_构造器映射

  • 构造器映射:
    • XML Mapper
      • 项目0503构造器映射
    • @ConstructorArgs注解
      • 项目0504构造器映射_注解

构造器映射:

构造器映射能控制MyBatis调用指定、有参数的构造器来创建结果集要映射的Java对象

XML Mapper

在<resultMap…/>元素内添加<constructor…/>子元素来实现构造器映射。
<constructor…/>元素可包含多个<idArg…/>和<arg…/>子元素,它们用于定义数据列与构造参数之间的对应关系。
其中<idArg…/>元素用于定义作为标识属性的构造参数,它们可指定如下属性:
- column:指定列名。
- javaType:指定属性的Java类型。通常需要指定,
调用指定构造器需要根据构造器参数类型来匹配
- jdbcType:指定该列的JDBC类型。一般无需指定,MyBatis可以自动推断。
- typeHandler:为该数据列与属性值之间的转换指定类型处理器。
- name:指定构造参数的参数名。要用@Param或-parameters编译选项
- select:该属性引用另一个<select…/>元素的id,指定使用嵌套查询来检索数据
- resultMap:该属性引用另一个<resultMap…/>元素的id,完成嵌套结果集的映射

项目0503构造器映射

映射文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 根元素是mapper,该元素的namespace属性值相当于该mapper的唯一标识 -->	
<mapper namespace="org.itcheng.app.dao.NewsMapper"><!-- SQL的id需要与Mapper接口的方法名相同  --><insert id="saveNews">insert into news_inf values (null, #{title}, #{content})</insert><!-- 定义SQL语句 --><update id="updateNews">update news_inf set news_title = #{title}, news_content = #{content}where news_id=#{id}</update><!-- SQL的id需要与Mapper接口的方法名相同  --><delete id="deleteNews">delete from news_inf where news_id = #{xyz} </delete><!-- 使用resultMap来完成结果集与Java对象之间的映射关系--><select id="findNews" resultMap="newsMap">select * from news_inf where news_id > #{id}		</select><!-- resultMap专门定义一个映射规则:完成结果集与Java对象之间的映射关系 --><resultMap type="news" id="newsMap"><constructor><!-- 映射标识属性对应的构造器参数 --><idArg column="news_id" javaType="int" /><arg column="news_title" javaType="string"/><!-- 此处包含几个参数映射,就表明调用带几个参数的构造器 --></constructor><result column="news_content" property="content"/><!-- 映射映射普通属性 --></resultMap></mapper>

@ConstructorArgs注解

@ConstructorArgs注解对应于 <constructor…/>元素
该注解的value属性可指定多个@Arg注解
@Arg相当于 <idArg…/>和<arg…/>的综合体,当它的id属性为true,代表<idArg…/>元素。

项目0504构造器映射_注解

package org.itcheng.app.dao;import java.util.List;import org.apache.ibatis.annotations.Arg;
import org.apache.ibatis.annotations.ConstructorArgs;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.itcheng.app.domain.News;// Mapper组件相当于DAO组件
public interface NewsMapper
{@Insert("insert into news_inf values (null, #{title}, #{content})")int saveNews(News news);@Update("update news_inf set news_title = #{title}, news_content = #{content}\r\n" + "where news_id=#{id}")int updateNews(News news);@Delete("delete from news_inf where news_id = #{xyz}")void deleteNews(Integer id);@Select("select * from news_inf where news_id > #{id}")@ConstructorArgs({@Arg(column = "news_id", javaType = Integer.class, id = true),@Arg(column = "news_title", javaType = String.class)})@Results({@Result(column = "news_content", property="content")})List<News> findNews(Integer id);
}

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

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

相关文章

AI扩展手写数字识别应用(二)

理解代码 输入处理 在新应用的代码部分&#xff0c;和我们在手写数字识别课程介绍的代码比起来&#xff0c;差别最大的地方就在于如何处理输入。在上个案例中&#xff0c;我们只需要简单地将正方形区域中的图像格式调整一下&#xff0c;即可用作MNIST模型的输入。而在本文的案…

企业网站建站源码系统:Thinkphp5内核企业网站建站模板源码 带完整的安装代码包以及搭建教程

随着互联网的快速发展&#xff0c;企业对于网站的需求日益增强。为了满足这一市场需求&#xff0c;小编给大家分享一款基于Thinkphp5内核的企业网站建站源码系统。该系统旨在为企业提供一套功能强大、易于使用的网站建设解决方案&#xff0c;帮助企业快速搭建自己的官方网站&am…

STC8H8K蓝牙智能巡线小车——3.按键开关状态获取

电路分析 引脚为P37开关未按下时&#xff0c;P37是高电平开关按下时&#xff0c;GND导通&#xff0c;P37是低电平 编程思路 Driver目录中添加KEY.h文件&#xff0c;应包含引脚定义、开关GPIO实例化函数、开关状态获取函数以及当按下和未按下时执行不同的函数&#xff08;函数…

监督学习 - 梯度提升回归(Gradient Boosting Regression)

什么是机器学习 梯度提升回归&#xff08;Gradient Boosting Regression&#xff09;是一种集成学习方法&#xff0c;用于解决回归问题。它通过迭代地训练一系列弱学习器&#xff08;通常是决策树&#xff09;来逐步提升模型的性能。梯度提升回归的基本思想是通过拟合前一轮模…

Linux中的numactl命令使用详解

假设我们想控制线程如何被分配到处理器核心&#xff0c;或者选择我们想分配数据的位置&#xff0c;那么numactl命令就适合此类任务。在这篇文章中&#xff0c;我们讨论了如何使用numactl命令执行此类操作。 目录&#xff1a; 介绍语法命令总结参考文献 简介 现代处理器采用…

MessageBox:HubSpot x Facebook全方位对接!

在当今数字化营销的浪潮中&#xff0c;将多个业务系统高效整合成为推动企业成功的核心。HubSpot作为一体化的市场营销平台&#xff0c;与Facebook的整合通过强大的工具——MessageBox&#xff0c;为企业提供了更灵活、高效的整合方案。今天运营坛将深入探讨在HubSpot平台上整合…

【数据库原理】(29)数据库设计-需求分析阶段

需求分析就是调查、收集、分析、最后定义用户对数据库的各种要求。它是整个数据库设计的基础和出发点,其结果将直接影响后面各步的设计,甚至决定着最终设计的数据库的好坏与成败。为此,首先必须知道需求分析的任务是什么,以及采用什么样的方法进行需求分析。 一.需求分析的任务…

【docker】Docker Swarm 核心概念及详细使用

一、什么是Docker Swarm Docker Swarm 是 Docker 的原生集群管理工具。它的主要作用是将多个 Docker 主机集成到一个虚拟的 Docker 主机中&#xff0c;为 Docker 容器提供集群和调度功能。通过 Docker Swarm&#xff0c;您可以轻松地管理多个 Docker 主机&#xff0c;并能在这…

❤ Uniapp使用三( 打包和发布上线)

❤ Uniapp使用三( 打包和发布上线) 一、介绍 什么是 uniapp&#xff1f; uniapp 是一种基于 Vue.js 的多平台开发框架&#xff0c;它可以同时用于开发安卓、iOS、H5 等多个平台。因此&#xff0c;只需要写一次代码就可以在多个平台上运行&#xff0c;提高了开发效率。 打包…

Apache Zeppelin学习记录2

Apache Zeppelin学习记录2 文章目录 Apache Zeppelin学习记录2前言一、基础调用二、带参数调用1.代码块要增加一行z.textbox("folder_path", "input")2.读取result 总结 前言 上一章讲了如何使用zeppelin来接入python&#xff0c;本节我们来看看如何使用R…

curl-7.70.0 --with-ssl

openssl的官网 https://www.openssl.org/source/ [ Old Releases ] - /source/old/index.html curl的官网 https://curl.haxx.se/download.html curl downloads 如果想要调试源码 ./configure --disable-shared --without-zlib --enable-static --enable-ipv6 --host&q…

uniapp 使用canvas制作柱状图

效果图&#xff1a; 实现思路&#xff1a; 1、通过展示数据计算需要画几根柱子&#xff1b; 2、通过组件宽度、高度计算出每根柱子的宽度及高度&#xff1b; 3、for循环依次绘制每根柱子&#xff1b; 4、绘制柱子时&#xff0c;先绘制顶部百分比、value值&#xff0c;再绘制柱子…

掌握Spring缓存-全面指南与最佳实践

第1章&#xff1a;引言 大家好&#xff0c;我是小黑&#xff0c;咱们今天来聊聊缓存&#xff0c;在Java和Spring里&#xff0c;缓存可是个大角色。咱们在网上购物&#xff0c;每次查看商品详情时&#xff0c;如果服务器都要去数据库里翻箱倒柜&#xff0c;那速度得慢成什么样&…

Spring Boot “How-to” 指南中文文档-下

本文为官方文档直译版本。原文链接 篇幅较长&#xff0c;遂分两篇 Spring Boot “How-to” 指南中文文档-下 Jersey利用 Spring Security 保护 Jersey 端点的安全与其他网络框架一起使用Jersey HTTP Clients配置 RestTemplate 以使用代理配置基于 Reactor Netty 的 WebClient 使…

自制一款多版本Windows平台的点Net3.5离线安装神器,彻底解决一切烦恼!

网管小贾 / sysadm.cc 公司来了位刚毕业的实习生小蔡&#xff0c;老板让我带带他。 我想着这小伙子干活挺积极主动&#xff0c;平时没事也可以给我搭把手。 可意想不到的是&#xff0c;正是由于我一时心软放松警惕&#xff0c;渐渐被拖进了坑。 话说某天临下班前&#xff0c;…

开发安全之:Database access control

Overview 如果没有适当的 access control&#xff0c;就会执行一个包含用户控制主键的 SQL 指令&#xff0c;从而允许攻击者访问未经授权的记录。 Details Database access control 错误在以下情况下发生&#xff1a; 1. 数据从一个不可信赖的数据源进入程序。 2. 这个数据用…

Linux下防火墙相关命令整理

目录 一.前言二.相关命令整理 一.前言 这篇文章简单整理一下Linux系统中防火墙相关命令。 二.相关命令整理 开启防火墙 systemctl start firewalld关闭防火墙 systemctl stop firewalld重启防火墙 systemctl restart firewalld开机启用防火墙 systemctl enable firewall…

CTF CRYPTO 密码学-4

题目名称&#xff1a;奇怪的先生 题目描述&#xff1a; 描述:oss先生将三个培根的中间一只移到了左边,然后咬了一小口最后一根&#xff0c;说真好吃&#xff0c;真是个奇怪的先生&#xff01; 密文&#xff1a;VlM5WnlXc0ZibEhmMmE1ZHYxMDlhVkdmMlk5WmtRPT0 分析 应该是根据题…

FFmpeg连载6-音频重采样

今天我们的实战内容是将音频解码成PCM&#xff0c;并将PCM重采样成特定的采样率&#xff0c;然后输出到本地文件进行播放。 什么是重采样&#xff1f; 所谓重采样&#xff0c;一句话总结就是改变音频的三元素&#xff0c;也就是通过重采样改变音频的采样率、采样格式或者声道数…

C# 生成指定长度的随机字符串

/// <summary> /// 生成指定长度的随机字符串 /// </summary> /// <param name"intLength">随机字符串长度</param> /// <param name"booNumber">生成的字符串中是否包含数字</param>…