mysql resulttype map_Mabitis 多表查询(一)resultType=“java.util.hashMap”

1、进行单表查询的时候,xml标签的写法如下

进行多表查询,且无确定返回类型时 xml标签写法如下:

因为没有对应的类型,所以返回HashMap 类型的结果。此时需要在dao中添加 java.util.HashMap 的引用。否则报错。

2、此次bug处理。另外习得从异常信息定位缺陷。

错误文件和错误地址都会显示到异常信息里。找到对应的关键字即可。

如,第一个错误最后一部分的信息为: Failed to parse mapping resource: ‘file [D:\JavaIDESoftWare\LeMapper.xml]‘; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias ‘java.util.hashMap‘.  Cause: java.lang.ClassNotFoundException: Cannot find class: java.util.hashMap

文件LeMapper.xml映射失败,未找到hashMap类。把HashMap 写成了hashMap!!!

找到xml文件,

最开始写的函数返回值类型为:List ,因此没有加载包 java.util.Map的时候并没报错。经同事修改函数后,函数返回值类型变为List> ,因此,当把包去掉

f2c48993a0b370816d08348934e92c17.png

直接报了语法错误

9010fd37b12d29c223efc4cce1955777.png

3、数据库获取当前时间

mysql     sqlserver

now() -- getdate()

比较全的mysql 时间相关处理的文章 MySQL获取时间和时间转换

4、断点处理

百度经验的文章,删除所有断点。好羞耻啊。竟然去找百度经验。。。。

5、bug 2 sql语句错误。

(1)未处理时间参数,造成错误

(2)还原数据库后,表结构对应不上了

症状是:(1)无代码(2)控制台直接提示 sql语句错误

6、阅读项目流程

e47fa202a699dda67bde704b2978261a.png

原文:http://www.cnblogs.com/siesteven/p/6180181.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
<select id="getdatatypeconfig" parameterType="java.util.HashMap" resultType="java.util.HashMap"> SELECT [datatypeconfig_colname] ,[datatypeconfig_strtype] ,[datatypeconfig_strlen] ,[datatypeconfig_strdecimal] ,[datatypeconfig_order] ,[datatypeconfig_remark] ,b.datavalue_colvalue AS datavalue FROM [JxBivAppUserDB].[dbo].[jxbivtob_settlement_datatypeconfig] a LEFT JOIN [JxBivAppUserDB].[dbo].[jxbivtob_settlement_datavalue] b ON a.datatype_id=b.datatype_id AND a.datatypeconfig_id=b.datatypeconfig_id WHERE b.datafile_id=(SELECT TOP (1) [datafile_id] FROM [JxBivAppUserDB].[dbo].[jxbivtob_settlement_datafile] WHERE datatype_id=9 ORDER BY datafile_id DESC) AND b.datatype_id=(SELECT TOP (1) datatype_id FROM [JxBivAppUserDB].[dbo].[jxbivtob_settlement_datafile] WHERE datatype_id=9 ORDER BY datafile_id DESC) </select> <insert id="insert_fundsettlementdays" parameterType="java.util.HashMap"> INSERT INTO [JxBivAppUserDB].[dbo].[jxbivtob_settlement_fundsettlementdays] (${columnNames}) VALUES (${columnValues}) </insert>public Map<String,Object> insert_fundsettlementdays(HttpServletRequest request, HttpServletResponse response){ response.setCharacterEncoding("UTF-8"); Map<String,Object> map =new HashMap<>(); List<HashMap> datatypeList=userDao.selectList("basessm.mapper.fundsettlementdays.getdatatypeconfig"); if (datatypeList == null || datatypeList.isEmpty()) { // 处理查询结果为空的情况 map.put("info", "No data available"); return map; } HashMap hashMap =new HashMap(); userDao.insert("basessm.mapper.fundsettlementdays.insert_fundsettlementdays",hashMap); map.put("info", "success"); return map; }根据我的SQL语句和方法来完成需求
07-15
根据你提供的代码和 SQL 语句,我做了一些修改和补充,以满足你的需求。请注意以下代码中的修改: ```xml <!-- 在 mapper 文件中定义查询方法 --> <select id="getDataTypeConfig" parameterType="java.lang.Integer" resultType="java.util.HashMap"> SELECT a.[datatypeconfig_colname] AS colName, b.datavalue_colvalue AS colValue FROM [JxBivAppUserDB].[dbo].[jxbivtob_settlement_datatypeconfig] a LEFT JOIN [JxBivAppUserDB].[dbo].[jxbivtob_settlement_datavalue] b ON a.datatypeconfig_id = b.datatypeconfig_id WHERE b.datafile_id = (SELECT TOP 1 [datafile_id] FROM [JxBivAppUserDB].[dbo].[jxbivtob_settlement_datafile] WHERE datatype_id = #{datatypeId} ORDER BY datafile_id DESC) AND b.datatype_id = (SELECT TOP 1 datatype_id FROM [JxBivAppUserDB].[dbo].[jxbivtob_settlement_datafile] WHERE datatype_id = #{datatypeId} ORDER BY datafile_id DESC) ORDER BY a.datatypeconfig_order ASC </select> <!-- 在 mapper 文件中定义插入方法 --> <insert id="insert_fundsettlementdays" parameterType="java.util.Map"> INSERT INTO [JxBivAppUserDB].[dbo].[jxbivtob_settlement_fundsettlementdays] (${columnNames}) VALUES (${columnValues}) </insert> ``` 在你的业务逻辑类中,可以按照以下方式调用上述方法: ```java @Autowired private DataInsertionMapper dataInsertionMapper; public Map<String, Object> insertFundSettlementDays(HttpServletRequest request, HttpServletResponse response) { response.setCharacterEncoding("UTF-8"); Map<String, Object> map = new HashMap<>(); // 调用查询方法获取数据 List<HashMap> datatypeList = dataInsertionMapper.getDataTypeConfig(9); if (datatypeList == null || datatypeList.isEmpty()) { // 处理查询结果为空的情况 map.put("info", "No data available"); return map; } // 构建插入的列名和对应的值 StringBuilder columnNames = new StringBuilder(); StringBuilder columnValues = new StringBuilder(); for (HashMap<String, Object> datatype : datatypeList) { String colName = (String) datatype.get("colName"); String colValue = (String) datatype.get("colValue"); columnNames.append(colName).append(","); columnValues.append("'").append(colValue).append("',"); } columnNames.deleteCharAt(columnNames.length() - 1); columnValues.deleteCharAt(columnValues.length() - 1); // 构建参数并调用插入方法 Map<String, Object> paramMap = new HashMap<>(); paramMap.put("columnNames", columnNames.toString()); paramMap.put("columnValues", columnValues.toString()); dataInsertionMapper.insertFundSettlementDays(paramMap); map.put("info", "success"); return map; } ``` 请根据你的具体需求进行进一步调整和修改。同时,确保在配置文件中正确设置数据源和相关配置信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值