<typeAlias> <reslutmap> <parameterMap>

本文深入解析了MyBatis中的typeAlias和parameterMap元素的作用及用法,包括如何为类名设置别名以简化配置,以及如何在参数映射中关联JavaBean与SQL语句,确保数据的正确传输。
<typeAlias>元素让您为一个通常较长的、全限定类名指定一个较短的别名。
例如:
<!-- 其实就是将bean的替换成一个短的名字 -->
<typeAlias alias="Student" type="ncut.com.bean.Student"/>
<parameterMap>负责将javabean与sql语句进行关联
例如:
<parameterMap class="com.isbn.bean.AlbumDetailInfo" id="albumDetailInfo">
<parameter property="productid" javaType="java.lang.String" jdbcType="VARCHAR" mode="OUT" />
<parameter property="albumid" javaType="java.lang.String" jdbcType="VARCHAR" mode="IN"/>
<parameter property="pname" javaType="java.lang.String" jdbcType="VARCHAR" mode="IN"/>
<parameter property="recdate" javaType="java.util.Date" jdbcType="DATE" mode="IN"/>
<parameter property="pdesc" javaType="java.lang.String" jdbcType="VARCHAR" mode="IN"/>
<parameter property="maker" javaType="java.lang.String" jdbcType="VARCHAR" mode="IN"/>
<parameter property="publisher" javaType="java.lang.String" jdbcType="VARCHAR" mode="IN"/>
<parameter property="format" javaType="java.lang.String" jdbcType="VARCHAR" mode="IN"/>
在众多的属性当中id是必须的。它作为<parametermap>元素的唯一标识
在<parameter>元素中,property属性是必须的,其它的是可选项
<parameter>:
---->property:是javabean的属性
---->jdbcType:是javabean属性对应表的数据库中列的数据类型,通常只有数据库中的该字段可以为null时才需要指出jdbcType属性
---->javaType该字段在javabean中的数据类型
---->mode是为存储过程中数据项的流向类型
<resultMap>返回Map类型
当想得到一个map类型的返回值时可以通过resultMap元素
例如
<resultMap id="albumdetailinfoResultMap" class="com.isbn.bean.AlbumDetailInfo">
<!--基础属性-->
<result property="productid" column="PRODUCTID" jdbcType="VARCHAR" />
<result property="albumid" column="ALBUMID" jdbcType="VARCHAR"/>
<result property="pname" column="PNAME" jdbcType="VARCHAR"/>
<result property="recdate" column="RECDATE" jdbcType="DATE"/>
<result property="pdesc" column="PDESC" jdbcType="VARCHAR"/>
<result property="maker" column="MAKER" jdbcType="VARCHAR"/>
<result property="publisher" column="PUBLISHER" jdbcType="VARCHAR"/>
column是替换的数据项名;
那么下面的sql语句就可以这样写了
<select id="getByIsrc" resultMap="albumdetailinfoResultMap" >
SELECT <include refid="albumdetailinfoColumns"/>

FROM T_D_ALBUMDETAILINFO WHERE ISRC = #isrc:VARCHAR#

</select>

<?xml version="1.0" encoding="GB2312"?> <msg> <msgHeader> <srvAddr>10.105.191.35:11016</srvAddr> <reqAddr>Surrounding-x-1760595539862</reqAddr> <msgOwner>EHS System</msgOwner> <srvMethod>eIssueChartSignOff</srvMethod> <srvId>MES</srvId> <timeStamp>2025-10-16 14:18:59</timeStamp> <timeOut>120</timeOut> <txId>8</txId> <locale>EN</locale> <retCode>0</retCode> <retMsg/> </msgHeader> <msgBody> <signOff>QS202509090005</signOff> <mesUserId>TRAINING</mesUserId> <docId>20250909</docId> <totalChartCount>1</totalChartCount> <totalMsgCount>1</totalMsgCount> <msgNumber>1</msgNumber> <chartNo>1</chartNo> <chart> <chartSequence>46727441</chartSequence> <chartName>QB-3000091-N2ETCHTHK1</chartName> <chartTemplate>XbarS</chartTemplate> <description>OTHERS</description> <oldTemplate>XbarS</oldTemplate> <oldDescription>OTHERS</oldDescription> <chartParameterNo>13</chartParameterNo> <chartParameter> <name>OCAP</name> <value>SH-AMIAF01-01</value> </chartParameter> <chartParameter> <name>S_CL</name> <value/> </chartParameter> <chartParameter> <name>S_LCL</name> <value/> </chartParameter> <chartParameter> <name>S_Rules</name> <value>WE1</value> </chartParameter> <chartParameter> <name>S_UCL</name> <value>9.8</value> </chartParameter> <chartParameter> <name>Trend_CL</name> <value>91.2</value> </chartParameter> <chartParameter> <name>Trend_LCL</name> <value>86.3</value> </chartParameter> <chartParameter> <name>Trend_Rules</name> <value>WE1</value> </chartParameter> <chartParameter> <name>Trend_UCL</name> <value>96.1</value> </chartParameter> <chartParameter> <name>Xbar_CL</name> <value>91.2</value> </chartParameter> <chartParameter> <name>Xbar_LCL</name> <value>87.71</value> </chartParameter> <chartParameter> <name>Xbar_Rules</name> <value>WE1,TREND2</value> </chartParameter> <chartParameter> <name>Xbar_UCL</name> <value>94.68</value> </chartParameter> <oldParameterNo>13</oldParameterNo> <oldParameter> <name>OCAP</name> <value>SH-AMIAF01-01</value> </oldParameter> <oldParameter> <name>Trend_UCL</name> <value>96.1</value> </oldParameter> <oldParameter> <name>Trend_CL</name> <value>91.2</value> </oldParameter> <oldParameter> <name>Trend_LCL</name> <value>86.3</value> </oldParameter> <oldParameter> <name>Trend_Rules</name> <value>WE1</value> </oldParameter> <oldParameter> <name>Xbar_UCL</name> <value>94.68</value> </oldParameter> <oldParameter> <name>Xbar_CL</name> <value>91.2</value> </oldParameter> <oldParameter> <name>Xbar_LCL</name> <value>87.72</value> </oldParameter> <oldParameter> <name>Xbar_Rules</name> <value>WE1,TREND2</value> </oldParameter> <oldParameter> <name>S_UCL</name> <value>9.8</value> </oldParameter> <oldParameter> <name>S_CL</name> <value/> </oldParameter> <oldParameter> <name>S_LCL</name> <value/> </oldParameter> <oldParameter> <name>S_Rules</name> <value>WE1</value> </oldParameter> </chart> <Result>0</Result> <ErrorDesc/> </msgBody> </msg> 通过代码: Element msgBody = (Element) doc.getElementsByTagName("msgBody").item(0); Map<String, Object> map = parseChartElement(msgBody); public static Map<String, Object> parseChartElement(Element chartElement) { Map<String, Object> chartMap = new HashMap<>(); NodeList children = chartElement.getChildNodes(); for (int i = 0; i < children.getLength(); i++) { Node node = children.item(i); if (node.getNodeType() == Node.ELEMENT_NODE) { Element child = (Element) node; if ("chartParameter".equals(child.getTagName())) { String name = child.getElementsByTagName("name").item(0).getTextContent(); String value = ""; if (child.getElementsByTagName("value").item(0) != null) { value = child.getElementsByTagName("value").item(0).getTextContent(); } chartMap.put(name, value); } else { String text = child.getTextContent(); chartMap.put(child.getTagName(), text); } } } return chartMap; } public EhsForm createEhsForm(Map mesRequestMap) { EhsForm ehsForm = new EhsForm(); ehsForm.setFab((String) mesRequestMap.get(“fab”)); ehsForm.setSignOffNo((String) mesRequestMap.get(“signOff”)); ehsForm.setMesApplicant((String) mesRequestMap.get(“mesUserId”)); ehsForm.setCreateDate(new Date()); ehsForm.setFecpNo((String) mesRequestMap.get(“docId”)); ehsForm.setStatus(“New Reqeust”); Object chartObj = mesRequestMap.get("chart"); if (chartObj instanceof List) { List<?> chartList = (List<?>) chartObj; if (chartList != null && !chartList.isEmpty()) { for (Object chartItem : chartList) { if (!(chartItem instanceof Map)) continue; Map<String, Object> chartMap = (Map<String, Object>) chartItem; EhsChartForm chartForm = new EhsChartForm(); chartForm.setStatus("Need Check"); chartForm.setChartSeq((String) chartMap.get("chartSequence")); chartForm.setChartName((String) chartMap.get("chartName")); chartForm.setChartTemplate((String) chartMap.get("chartTemplate")); chartForm.setOldTemplate((String) chartMap.get("oldTemplate")); chartForm.setDescription((String) chartMap.get("description")); chartForm.setOldDescription((String) chartMap.get("oldDescription")); // 处理 chartParameter 和 oldParameter(需要根据实际结构判断如何处理) Object chartParameterObj = mesRequestMap.get("chartParameter"); if (chartParameterObj instanceof List) { ((List<?>) chartParameterObj).forEach(item -> { if (item instanceof Map) { Map<String, Object> parameterMap = (Map<String, Object>) item; ChartParameter p = new ChartParameter(); p.setParameterName((String) parameterMap.get("name")); p.setParameterValue((String) parameterMap.get("value")); System.out.println("chartParameter: " + p); } }); } Object oldParameterObj = mesRequestMap.get("oldParameter"); if (oldParameterObj instanceof List) { ((List<?>) oldParameterObj).forEach(item -> { if (item instanceof Map) { Map<String, Object> parameterMap = (Map<String, Object>) item; ChartParameter p = new ChartParameter(); p.setParameterName((String) parameterMap.get("name")); p.setParameterValue((String) parameterMap.get("value")); System.out.println("oldParameter: " + p); } }); } //ehsForm.addChart(chartForm); } } } String applicant = (String) mesRequestMap.get("mesUserId"); if (StringUtils.isNotBlank(applicant) && applicant.length() >= 7) { applicant = applicant.substring(applicant.length() - 7).toUpperCase(); // EmployeeInfo emp = this.employeeService.loadEmployeeInfoById(applicant); // if (emp != null) { // ehsForm.setApplicant(applicant); // ehsForm.setAppOrgid(emp.getOrganization().getOrgId()); // } } //create(ehsForm); return ehsForm; } 现在代码有问题,需要优化一下
10-17
2. (单选题) MyBatis 中的 Mapper 接口是做什么用的? A 定义数据库表结构 B 定义 SQL 语句 C 定义事务管理 D 定义业务逻辑 3. (单选题) 在 MyBatis 中,哪个标签用于定义一条查询语句? A <select> B <insert> C <update> D <delete> 4. (单选题) MyBatis 支持的动态 SQL 元素不包括以下哪个? A <if> B <choose> C <when> D <for> 5. (单选题) MyBatis 中,哪个配置元素用于定义数据库连接信息? A <dataSource> B <transactionManager> C <environments> D <mappers> 6. (单选题) MyBatis 中,哪个配置元素用于定义结果映射? A <resultMap> B <parameterMap> C <sqlMap> D <mapper> 7. (单选题) MyBatis 中,哪个配置元素用于定义多个数据库环境? A <environments> B <dataSource> C <mappers> D <transactionManager> 8. (单选题) MyBatis 中,哪个配置元素用于定义 MyBatis 映射文件的位置? A <mappers> B <environments> C <dataSource> D <transactionManager> 9. (单选题) MyBatis 支持的结果集类型不包括以下哪个? A list B map C xml D array 10. (单选题) MyBatis 中,哪个配置元素用于定义 MyBatis 插件? A <plugins> B <environments> C <dataSource> D <mappers> 11. (单选题) MyBatis 支持的日志实现不包括以下哪个? A SLF4J B LOG4J C LOG4J2 D JULL 12. (单选题) MyBatis 中,哪个配置元素用于定义 MyBatis 的日志实现? A <settings> B <environments> C <dataSource> D <logImpl> 13. (单选题) MyBatis 中,哪个配置元素用于定义 MyBatis 属性文件的位置? A <properties> B <propertyFiles> C <configFile> D <settings> 14. (单选题) PageHelper 分页插件是通过什么机制来实现分页的? A 拦截器(Interceptor) B AOP C JDBC D XML 15. (单选题) MyBatisX 是一款基于哪个IDE的快速开发插件? A Eclipse B IntelliJ IDEA C NetBeans D Visual Studio Code 16. (单选题) 在 MyBatis 中,使用分页插件后,以下哪个操作会导致分页不生效? A 在查询之前调用 PageHelper.startPage(pageNum, pageSize); B 在查询之后调用 PageHelper.startPage(pageNum, pageSize); C 使用 PageInfo 对象封装查询结果 D 使用 Page 对象封装查询结果 17. (单选题) MyBatisX 插件的安装步骤中,以下哪个步骤不是必需的? A 在 IDEA 中安装 MybatisX 插件 B 在 pom.xml 文件中引入 MyBatis-Plus 依赖 C 在 application.yml 中配置数据库连接 D 在数据库中创建视图 18. (单选题) 在MyBatis的动态SQL中,<if> 标签的作用是什么? A 仅当指定条件为真时执行内部的SQL语句 B 无条件地执行内部的SQL语句 C 循环执行内部的SQL语句 D 将多个SQL语句合并为一个 19. (单选题) MyBatis中 <foreach> 标签的 collection 属性是用来遍历哪个类型的参数? A 单个值 B 数组 C 集合 D 映射 20. (单选题) 在MyBatis中,<set> 标签用于构建哪个SQL语句的部分? A SELECT B INSERT C UPDATE D DELETE 21. (单选题) 在MyBatis中,如果要实现多对一查询,通常使用哪个标签来定义结果映射? A <collection> B <association> C <result> D <sql> 22. (单选题) 当使用MyBatis进行一对多查询时,以下哪个标签用于定义结果映射中的集合属性? A <association> B <collection> C <result> D <sql> 23. (单选题) 在MyBatis中,如果要通过嵌套查询实现多表关联查询,通常需要在哪个标签中定义子查询? A <association> B <collection> C <resultMap> D <select> 24. (单选题) 在MyBatis中,如果要实现分页关联查询,通常会使用哪个插件来辅助实现? A PageHelper B MyBatisX C MyBatis-Spring D MyBatis-Plus 25. (单选题) MyBatis 允许在 XML 映射文件中使用哪种标签来包含其他 SQL 片段? A <include> B <import> C <file> D <sql>
最新发布
10-18
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值