java : iBatis 2.3 resultMap

Java框架学习_Mybatis(八)resultMap属性及其使用 在mapper.xml里返回值不止有一个resultType还有一个resultMap,这里介绍一下用法 1、resultMap属性的使用: 问题描述: 当数据库的属性名和pojo不一致的时候,会出现不匹配从而输出为null的情况,这个时候就会用到 resultMap 具体点:数据库里面是user_id,pojo里面是userId,这就出事了,这个时候的userId不能识别全为null 解决方... 阅读详情

sqlMapConfig.xml 请参考: iBATIS in Action 2007

sqlMap2.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap
 PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
 "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="area">
<resultMap id="result" class="ibatis.test.Area">
 <result property="code" column="code" />
 <result property="cname" column="cname" />
</resultMap> 

<select id="get_cname" parameterClass="hashmap" resultMap="result">
<![CDATA[
SELECT code,cname FROM table1 WHERE code in (#code1#,#code2#,#code3#)
]]>
</select>
</sqlMap>

POJO : Area.java

package ibatis.test;
import java.io.Serializable;
// POJO
public class Area implements Serializable {
	private String code;
	private String cname;

	public Area(){}

	public String getCode() { return this.code; }
	public void setCode(String code) { this.code = code; }

	public String getCname() { return this.cname; }
	public void setCname(String cname) { this.cname = cname; }

}


测试程序: Test2.java

package ibatis.test;
/*
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
*/
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;

import ibatis.test.Area;

import java.io.Reader;
import java.io.IOException;
import java.util.List;
import java.util.HashMap;
import java.sql.SQLException;

public class Test2 {
//	public static Log log = LogFactory.getLog(Test2.class);

	public static void main(String[] args) throws Exception {
	//	PropertyConfigurator.configure("./log4j.properties");
	
		String code;
		if (args.length ==1){
			code = args[0];
		} else {
			System.out.println(" usage: java Test2 ?????? ");
			return;
		}
		try{
			String resource = "ibatis/test/sqlMapConfig.xml";
			Reader reader = Resources.getResourceAsReader (resource);
			SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
		
			HashMap<String,String> codes = new HashMap<String,String>();
			codes.put("code1",code.substring(0,2)+"0000");
			codes.put("code2",code.substring(0,4)+"00");
			codes.put("code3",code);

			List alist = sqlMap.queryForList("get_cname", codes);
			int rows = alist.size();
			System.out.println(" selected " + rows + " records.");
			Area area ;
			for(int i = 0; i < rows; i++) {
				area = (Area)alist.get(i);
				System.out.println(area.getCode() +"  "+ area.getCname());
			}
		} catch(Exception e){
			System.out.println(e);
		}
	}
}


编译 compile2.bat

@echo off
set JarPATH=/iBatis/lib/ibatis-common-2.jar
set JarPATH=%JarPATH%;/iBatis/lib/ibatis-2.3.4.726.jar
javac -Xlint:unchecked -cp %JarPATH%;. Test2.java  Area.java
运行 run2.bat

@echo off
set JarPATH=/iBatis/mysql-connector-java-5.1.24-bin.jar
set JarPATH=%JarPATH%;/iBatis/lib/ibatis-common-2.jar
set JarPATH=%JarPATH%;/iBatis/lib/ibatis-2.3.4.726.jar
java -cp %JarPATH%;/ ibatis.test.Test2 %1








ibatis实战之一对多关联 ibatis一对多关联查询 在实际开发中,我们常常遇到关联数据的情况,如User对象拥有若干Book对象 每个Book对象描述了归属于一个User信息 如下步骤演示一对多关联 1、创建user(id,name,age)表和book(id,name,uid)表 2、POJO类 阅读详情

相关推荐

Java 中 MyBatis 的 ResultMap 高级应用

本文旨在为 Java 开发者提供 MyBatis 框架中 ResultMap 的高级应用指南,帮助开发者掌握复杂数据映射场景下的解决方案。内容涵盖从基础概念到高级技巧的全方位解析,特别关注实际开发中常见的复杂映射问题和性能优化策略。文章首先介绍 ResultMap 的基本概念,然后逐步深入探讨各种高级应用场景,包括嵌套结果映射、关联查询、集合映射、鉴别器等。随后将提供实际项目案例和性能优化建议,最后讨论未来发展趋势和常见问题解答。ResultMap。

AI开发架构师 444

java resultmap_Mybatis中强大的resultMap功能介绍

前言在Mybatis中,有一个强大的功能元素resultMap。当我们希望将JDBC ResultSets中的数据,转化为合理的Java对象时,你就能感受到它的非凡之处。正如其官方所述的那样:resultMap元素是 MyBatis 中最重要最强大的元素。它可以让你从 90% 的 JDBC ResultSets 数据提取代码中解放出来,并在一些情形下允许你进行一些 JDBC 不支持的操作。实际上,...

weixin_31922807的博客 2031

深入理解iBatis框架:从基础到实战

在MyBatis中,每一个映射文件都必须有一个唯一的命名空间(namespace),通常命名空间使用类的完全限定名。命名空间主要用来隔离SQL语句,并可以用来区分不同的映射文件。在实际开发中,命名空间的使用有助于减少ID冲突,并且可以与接口绑定,实现接口方法与SQL语句的映射。这样做的好处是能够清晰地知道每个SQL语句所对应的接口方法,便于管理和维护。命名空间一般遵循以下规则:- 应该使用Java类的完整命名空间,例如。

weixin_42599908的博客 725

IBatis的resultMap使用

1.创建Maven项目,项目名称ibatisdemo,目录结构如图所示2.pom.xml内容如下<projectxmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://mave...

weixin_33946020的博客 738

3dMax效率翻倍!用Octopus章鱼插件打造你的专属快捷菜单(附MaxScript入门指南)

本文详细介绍了如何利用Octopus插件和MaxScript脚本在3dMax中打造高效快捷菜单,显著提升三维建模与动画制作的工作效率。通过饼状菜单系统、自动化宏录制和脚本控制,用户可实现个性化工作流,节省大量操作时间。文章还提供了MaxScript入门指南,帮助开发者快速掌握这一强大工具。

weixin_30920853的博客 152

AI中台系统设计方案探讨

集成JupyterLab、低代码建模工具(如H2O.ai)、预训练模型库(Hugging Face、PaddleHub)。:通过REST/gRPC接口封装AI能力(如OCR、语音识别),支持流量控制与鉴权(如Kong、Apigee)。:服务注册发现(Consul)、熔断降级(Hystrix)、监控告警(Prometheus+Grafana)。:分布式存储(如HDFS、Ceph)与对象存储(如S3、OSS),支持海量数据高速读写。加密传输(TLS)、动态脱敏(如数据掩码)、访问控制(RBAC)。

reset2021的博客 1032

iBatis2学习笔记:SqlMap的配置总结(18条)

iBatis2学习笔记:SqlMap的配置总结(18条)   本来我也不喜欢iBatis,那是因为我当时还不怎么会用它,现在我想说,iBatis是个好东西,不信你试试看。下面是我在项目实践中对iBatis的一个小总结,希望帮助众多在疲于iBatis编码而无暇思考的苦工们找到一些偷懒的机会。   SqlMap的配置是iBatis中应用的核心。这部分任务占据了iBatis开发的70的工作量。 ...

weixin_34071713的博客 407

数据分析面试八股文--技能软件类

数据分析的“三板斧"指的是三个在 Python 数据分析领域广泛使用的库:NumPy,Pandas,和 Matplotlib。这三个库提供了处理和分析数据的强大工具。NumPyNumPy(Numerical Python)是一个开源 Python 库,用于支持大型多维数组和矩阵运算。此外,NumPy 还提供了大量的数学函数来操作这些数组。np.array():创建数组np.arange():返回一个有终点和起点的固定步长的排列。

zfyzfw的博客 4377

通过iBatis的queryForMap方法比较resultClass与resultMap

iBatis的返回值参数类型也有种:resultMap与resultClass 这两种类型的选择可以用两句话说明之: 一:当结果集列名和类的属性名完全相对应的时候,则可直接用resultClass直接指定查询结果类型。     二:当查询结果集与属性名对应不上的时候,就可以采用resultMap指定列名与对象属性名之间的对应关系,否则对应不上的属性将为null或0.     resul

5957

【Labview】对连续采集数据的一种采样方法

图1如图1,想要对这样一个连续信号进行数据点的采集,我根据网上收集到的方法,在此分享一下最终的结果。可以拓展结合文件的写入,完成对连续信号的采集和输出。 已知: 一个连续信号,如图1. 目标: 设定一定采集点个数、采集点时间间隔、和采集周期次数,得到这条连续信号的数据点,如图2. 图2 方法如下: 主要利用的是队列的方法。 在连续信号生成的时候,不断的写入队列,并且清除队列。 ...

李时珍食疗志的博客 1万+

避坑指南:AUTOSAR FlashDriver操作DFlash模拟EEPROM时,你最容易忽略的5个细节

本文深入探讨了AUTOSAR FlashDriver在DFlash模拟EEPROM操作中最容易被忽视的五大细节问题,包括地址合法性检查、操作时序控制、并发访问冲突、电源稳定性管理和寿命管理。通过实际项目案例和工程化解决方案,帮助开发者避免常见陷阱,提升汽车电子控制单元(ECU)的可靠性和稳定性。

weixin_42741930的博客 246

ibatis resultMap参数填充异常:java.sql.SQLException: Column 'XXX' not found.

今天使用ibatis时,出现了一个让人开始很疑惑的异常,后面看官方文档才找到,是我用mybatis习惯了,所以对于ibatis的这种细节区分没太在意。问题是因为resultMap是一整个对象,而我的查询只查询了部分的字段值,在填充resultMap时,报了一个SQL异常,XXX字段没找到 Cause: java.sql.SQLException: Column 'XXXX' not found.然

Thancks 7838

腾讯音乐 QQ音乐商业化客户端开发工程师:岗位深度解析与面试攻略

腾讯音乐QQ音乐商业化客户端开发工程师岗位要求3年以上Android开发经验,熟练掌握Kotlin/Java及跨端开发技术。核心职责包括QQ音乐客户端功能开发、架构优化、性能提升及技术攻关。岗位要求计算机相关本科以上学历,具备完整项目开发经验,熟悉TCP/IP等网络协议,能独立解决复杂技术问题。面试重点考察项目经验、架构设计、性能优化及新技术研究能力,建议候选人准备具体案例,量化成果,并熟悉Flutter等跨端技术。该职位强调技术深度与产品思维的结合,需展现扎实的编程基础、问题解决能力和团队协作精神。

郑伟强dev的专栏 366

ibatis resultMap 嵌套list应用

复杂类型集合的属性: Result Map还可以装入代表复杂类型对象集合(List)的属性,用以表示在数据库中相互关系为多对多或一对多的数据。拥有集合属性的类作为“一”的一方,而在集合中的对象作为“多”的一方。用来装入对象集合的mapped statement和上面例子一样。唯一的不同是,让SQL Map架构装入复杂类型集合(List)的业务对象的属性必须是java.util.List或ja...

jackssybin的专栏 1383

LVGL实战 透视卡盘

八张卡立在一个圆柱面上,摄像机在柱心前方。每帧对屏幕上的每个像素发一条射线,与卡片所在平面求交,得到三维交点,再投影回卡片自己的二维坐标系取样。透视、倾斜、近大远小、相互遮挡 —— 全部是这一步的副产物。

摸鱼专家 54

VMware ESXi 直通GPU

虚拟机需要独享GPU资源,那么就需要用到DirectPath I/O (直通),ESXi hypervisor 把 GPU 设备直接映射成虚机中的 GPU 设备,供应用使用。注意,内存注意一定要勾选预留,否则开机后报错如下:无法打开虚拟机 win10 的电源。1.ESXi主机,管理,硬件,PCI设备,勾选GPU卡,切换直通,会提示要求重启主机,重启主机之后,该GPU设备直通一栏显示为“活动”。先确认虚拟机是否EFI引导:编辑虚拟机 - 虚拟机选项 - 引导选项 - 固件 - EFI。

liwension的博客 6293

java resultmap_ibatis-返回结果通过resultMap封装

一、创建工程和数据库1.工程名:ibatisdemo1数据库名:ibatis创建表:studentCREATE TABLE `student` (`sid` int(11) NOT NULL,`sname` varchar(30) DEFAULT NULL,`major` varchar(30) DEFAULT NULL,`birth` date DEFAULT NULL,`score` deci...

weixin_39590566的博客 200

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

MyBatis 中 resultType 与 resultMap 的深度解析与应用实践

MyBatis结果映射方式对比:resultType与resultMap详解 本文系统对比了MyBatis中两种结果映射方式的特性和应用场景。resultType适用于简单单表查询,通过自动映射实现快速开发;resultMap则支持复杂的关联查询和自定义映射规则,可处理一对一、一对多关系。文章详细分析了两者的核心差异,包括灵活性、配置复杂度及性能表现,并提供了继承重用、自动手动映射结合等高级技巧。通过完整的实战示例,展示了如何根据业务需求动态选择映射策略,最后给出了开发建议:简单场景用resultType,

ywl470812087的博客 11万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

ibatis的resultClass与resultMap

1 sqlMap> 2 typeAlias alias="notice" type="path.country.basic.entity.Notice"/> 3 resultMap id="noticeResult" class="notice" > 4 result property="id" column="MainID"/> 5 res

鸿雁归来的专栏 487

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

关于IBATIS中SqlMap配置文件中resultType和resultMap的小差异

关于IBATIS中SqlMap配置文件中resultType和resultMap的小差异从字面上理解很简单resultType 就是返回的类型resultMap 返回的是一个结果集,这个结果集一般是用过resultMap节点来配置的,相应的type一般是一个Model。而resultType则就是类型,包括了,int,sring,以及类似model这样的Object类型。

youyou444的专栏 1004

ibatis 的remapResults属性

问题: 动态列和表 的 查询语句,第一次查询的时候ok,但是第二次查询的时候会报错,提示找不到列,并且报错的列名是一次查询的列名。 动态列和标的查询语句如下所示: SELECT DISTINCT $columns$ from $tableName$ where $columns$ is NOT NULL 解决问题的思路: 1) 调试代码,发现拼装的sql语句正确,但是

wendy_fly的专栏 4553

ibatis3中,用Map代替Bean

SQL语句中有关联查询(一条SQL), 不写pojo类,直接通过Map来代替查询的Bean

djy1135的专栏 1743

ibatis中resultMap和resultClass(Mybatis的resultType)的区别

resultMap和resultClass指的是在 select查询中的返回数据类型 resultMap取值 一、resultMap必须和我们之前定义id="accountMerchantDistribution"的Id相同  id="accountMerchantDistribution" class="com.sfbest.bean.AccountMerchantDi

bangrenzhuce的博客 6178

ibatis学习记录(2)

Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE

featheast的专栏 1382

java resultmap_java – iBatis ResultMaps:在此ResultSet中找不到列名<...>

给定iBatis select查询的ResultMap,所有列(映射到ResultMap中的属性)实际上都必须是SQL查询的一部分.但是如果想要重用ResultMaps,这有点烦人,特别是在结果映射中有“结果映射”时.例:当然,这两个结果映射是定义的,因为有一个查询使用连接来加载包含myPropName的容器对象,而someCollection包含一个内部对象的集合.但是,如果我想为另一个只需要加...

weixin_36396810的博客 628

iBATIS--resultClass resultMap

[color=blue]1: resultClass和resultMap 区别另一点是,resultMap用于多对一,一对多等这种情况,而resultclass 是实现不了的。 2: resultClass = "java.util.HashMap 、java.lang.String 、java.lang.Long 、"等如果数据库有多个值,那么返回的是list,但是实质是list里...

rainnguy的专栏 233
上一篇: java : iBatis 2.3 起点
下一篇: java : 转换编码小工具 native2ascii
belldeep
博客等级 码龄20年 1820粉丝 584原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值