MyBatis

mybatis常见报错之(Invalid bound statement (not found):)!!

廉价感情. 提交于 2020-10-28 14:11:59
在写好代码的时候,编译正常但是在调用接口的时候却报 Invalid bound statement (not found):错误,这个错误有以下几种可能 1.检查xml文件所在package名称是否和Mapper interface所在的包名 <mapper namespace="me.tspace.pm.dao.UserDao"> mapper的namespace写的不对!!!注意系修改。 2.UserDao的方法在UserDao.xml中没有,然后执行UserDao的方法会报此 3. UserDao的方法返回值是List<User>,而select元素没有正确配置ResultMap,或者只配置ResultType! 4. 如果你确认没有以上问题,请任意修改下对应的xml文件,比如删除一个空行,保存.问题解决 5.看下mapper的XML配置路径是否正确 重点来了!!! 当以上几种可能都正确的情况下,看一看编译器的target目录下编译好的的class文件,看一看mapper(按照自己起的名字找)文件夹下是否有xxxmapper.XMl文件加载进来 在以上五种情况都满足的情况下应该就是这个问题了(IDE不加载.XML文件)   解决办法:    在你IDE的pom文件中添加以下代码:      <build>     <resources>     <!-- mapper

mybatis报错:Invalid bound statement (not found)

可紊 提交于 2020-10-28 14:00:36
mybatis报错:Invalid bound statement (not found)的原因很多,但是正如报错提示一样,找不到xml中的sql语句,报错的情况分为三种: 第一种:语法错误 Java DAO层接口 public void delete(@Param("id")String id); Java 对应的mapper.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="xxx.xxx.xxx.Mapper"> <!-- 删除数据 --> <delete id="delete" parameterType="java.lang.String"> DELETE FROM xxx WHERE id=#{id} </delete> </mapper> 检查:1. 接口中方法名(delete)与xml文件中 id="delete"是否一致    2. xml文件中的 namespace="xxx.xxx.xxx.Mapper" 中的路径是否与接口文件路径一致    3

Mybatis-Spring扫描路径有重叠导致Invalid bound statement(not found)问题

人盡茶涼 提交于 2020-10-28 13:23:48
背景 近日,某个系统的测试环境mybatis总是报 Invalid bound statement(not found) 异常,导致tomcat容器无法启动。异常信息如下: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.xxx.management.dao.IssueDao.countByCid at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:227) at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:49) at org.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:65) at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:58) at com.sun.proxy.$Proxy126.countByCid(Unknown Source) at com.xxx.management.service

mybatis采坑记及源码分析

╄→гoц情女王★ 提交于 2020-10-28 12:05:31
问题描述 有些需求,需要把上一步批量操作返回的主键作为下个表的关联使用,这个时候用mybatis批量操作,mybatis批量操作有些版本不能返回主键,只能一个一个的插入,这样就降低了效率。 问题跟踪 跟踪1 mybatis的主线版本,能够正确返回主键id,主线版本修复了这个问题,并且@Param可以自定义命名 可以自己自定义集合属性名字 执行成功并返回主键id 跟踪2 mybais的3.3.x-3.4.x源码里面判断参数的属性,并设值 br/>在这些版本是修复了这个问题,但是还有限制,@Param只能是list或者是colletions或者是array才能返回id 接口方法里面的属性必须是list或者是colletions或者是array才能返回id 批量保存方法for里面的属性是list 跟踪3 项目如果用mybatis-plus,MybatisDefaultParameterHandler类已经处理了这种情况,如果是自定义的参数会转换成map,然后根据map再进行转换 获得参数之后,进行换行处理 获取主键属性,进行设值 总结 1、有时候出现问题得查看历史版本,并从提交问题单中找到解决的办法, 2、没有解决的方案,就重写框架代码,比如mybatisplus就是重写了ParameterHandler来进行参数的进一步处理。 3、在项目中如果确实没有好的解决办法,那就暂时放下

MyBatis笔记:获取自增主键的值(Mysql)和非自增主键(Oracle)

谁说胖子不能爱 提交于 2020-10-28 09:52:23
获取自增主键的值 mysql支持自增主键,自增主键值得获取,mybatis也是利用statement.getGenreatedKeys() useGeneratedKeys="true":使用自增主键获取主键值策略 KeyProperty:指定对应的主键属性,也就是mybatis获取到主键值以后,将这个值封装给javaBean的哪个属性 例:如果没写: useGeneratedKeys="true" keyProperty="id" ,我们是获取不到id的值的 <insert id="addEmp" parameterType="com.yorkmass.mybatis.bean.Employee" useGeneratedKeys="true" keyProperty="id"> insert into tbl_employee(last_name,email,gender) value(#{lastName},#{email},#{gender}) </insert> 添加之后可t通过如下方式获取主键的值 : //测试添加 Employee employee=new Employee(null,"jerry","15032506306@163.com","1"); mapper.addEmp(employee); System.out.println(employee

Java程序员非要进大厂才能拿到年薪50W+?

余生颓废 提交于 2020-10-28 08:42:29
不想当将军的兵不是好兵,就程序猿不想当架构师就不是好的程序员! Java架构师主要需要做哪些工作呢? 1、负责设计和搭建软件系统架构(平台、数据库、接口和应用架构等),解决开发中各种系统架构问题。 2、优化现有系统的性能,解决软件系统平台关键技术问题攻关、核心功能模块设计、核心代码开发。 3、在项目需求不断细化的工程中校正整体的架构设计,以及详细模块拆分设计。 4、营造技术学习氛围,带领团队不断完善开发开发方法及流程,提升开发效率与质量,加强技术标准及规范。 5、带领团队攻克例如大数据量、高并发、高稳定性等带来的各种挑战及技术难关。 6、责任心强,有团队合作精神,工作认真负责高效并具有一定抗压能力。 7、参与讨论公司产品发展方向,完整的规划和把握产品研发架构。 Java架构师要学习哪些知识呢? 希望以下的学习路线能对你有帮助 并发编程 JAVA内存模型(JMM) java当中的线程通讯和消息传递 什么是重排序和顺序一致性?Happens-Before?As-If-Serial? Synchronized的概念和分析 同步、重量级锁以及Synchronized的原理分析 自旋锁、偏向锁、轻量级锁、重量级锁的概念、使用以及如何来优化他们 Volatile和DCL的知识 Volatile的使用场景和Volatile实现机制、内存语义、内存模型 DCL的单例模式,什么是DCL

StackOverflow 上面最流行的 7 个 Java 问题!

核能气质少年 提交于 2020-10-28 04:21:40
原文:https://dwz.cn/Boy5tcHJ 译文:https://dwz.cn/j1hgReGd StackOverflow发展到目前,已经成为了全球开发者的金矿。它能够帮助我们找到在各个领域遇到的问题的最有用的解决方案,同时我们也会从中学习到很多新的东西。 这篇文章是在我们审阅了StackOverflow上最流行的Java问题以及答案后从中挑出来的。即使你是一个有丰富经验的开发者,也能从中学到不少东西。 一、分支预测 问题链接: https://stackoverflow.com/questions/11227809/why-is-it-faster-to-process-a-sorted-array-than-an-unsorted-array StackOverflow上最多投票的一个Java问题是: 为什么处理一个排序数组要比非排序数组快的多 。 为了回答这个问题,你需要使用分支预测(branch prediction)。分支预测是一种架构,旨在通过在真实的路径发生前猜测某一分支的下一步来提升处理过程。 分支在这里即一个if语句。这样的话,如果是一个排序数组,那么分支预测将会进行,否则不会进行。 StackOverflow上的一个回答者,链接: http://stackoverflow.com/questions/11227809/why-is-it-faster

我们如何学好Java?

不打扰是莪最后的温柔 提交于 2020-10-28 03:51:26
正在学习Java 计算机语言并且打算作为自己今后的发展方向,不幸的是你在学习中遇到了比较困惑而又不能解决的问题, 你必需要明确以下几个很重要的问题和掌握相对正确和适合自己学习编程的方法,从而为自己解惑并不断的提高自己,最终达到一个多数企业入职的基本标准。 首先,你要清楚自己学习Java的真正目标是否明确,学习Java的想法是否是成熟的。对于这个问题可能很多人都会不屑一顾,凭借我多年从事Java开发及在工作中接触的多数搞Java开发的人经验而言,最终能够把Java 语言学好,多数人都是将Java作为自己以后从事此项工作为目标,这个目标一旦明确则给与自己无尽的动力和压力,没有动力和压力人就有各种借口遇到困难而退缩甚至放弃。 其次,在你有了非常明确的目标后,而为之努力学习过程中,你必需清楚多数企业对于Java 开发人员的基本入职要求和需要掌握哪些常用技术。当然不同企业要求是由些差异的,不过对于一个初学Java的人而言,通常应该知道以下是大多数企业对于初级程序员的基本要求,可以从以下几个技术方面审核自己的技术水平。 一、任何Java开发方向都必需要将Java SE基础核心理论知识及实用技术牢牢掌握,从Java角度讲无论什么样的所谓高级Java技术都建立在Java SE核心基础之上,譬如Jsp 动态网页技术,Servlet Java EE标准核心控制器, freemarker 模板技术,

Java程序员非要进大厂才能拿到年薪50W+,从而告别重复的CRUD?

别等时光非礼了梦想. 提交于 2020-10-27 18:33:50
不想当将军的兵不是好兵,就程序猿不想当架构师就不是好的程序员! Java架构师主要需要做哪些工作呢? 1、负责设计和搭建软件系统架构(平台、数据库、接口和应用架构等),解决开发中各种系统架构问题。 2、优化现有系统的性能,解决软件系统平台关键技术问题攻关、核心功能模块设计、核心代码开发。 3、在项目需求不断细化的工程中校正整体的架构设计,以及详细模块拆分设计。 4、营造技术学习氛围,带领团队不断完善开发开发方法及流程,提升开发效率与质量,加强技术标准及规范。 5、带领团队攻克例如大数据量、高并发、高稳定性等带来的各种挑战及技术难关。 6、责任心强,有团队合作精神,工作认真负责高效并具有一定抗压能力。 7、参与讨论公司产品发展方向,完整的规划和把握产品研发架构。 Java架构师要学习哪些知识呢? 希望以下的学习路线能对你有帮助 并发编程 JAVA内存模型(JMM) java当中的线程通讯和消息传递 什么是重排序和顺序一致性?Happens-Before?As-If-Serial? Synchronized的概念和分析 同步、重量级锁以及Synchronized的原理分析 自旋锁、偏向锁、轻量级锁、重量级锁的概念、使用以及如何来优化他们 Volatile和DCL的知识 Volatile的使用场景和Volatile实现机制、内存语义、内存模型 DCL的单例模式,什么是DCL

Mybatis:动态SQL分组查询

半城伤御伤魂 提交于 2020-10-27 16:46:24
目录 1. 实现思路 2. 代码实现 2.1 mapper 2.2 mapper 接口 2.3 Service层 AjaxResult对象 2.4 controller 2.5 测试 1. 实现思路 利用Mybatis 动态SQL 拼装Group By 语句,实现单个和多个字段分组 2. 代码实现 2.1 mapper <!--分组查询证书信息列表--> <resultMap id="groupResultMap" type="java.util.Map"> <result column="count(1)" property="num" jdbcType="VARCHAR"/> <result column="user_unit" jdbcType="VARCHAR" property="userUnit"/> <result column="train_cycle_zh" jdbcType="VARCHAR" property="trainCycleZh"/> <result column="train_cycle_en" jdbcType="VARCHAR" property="trainCycleEn"/> <result column="train_major_zh" jdbcType="VARCHAR" property="trainMajorZh"/> <result