1、关于mybatis的文件一般都是其mapper文件出错:

首先关于输入参数parameterType出错:

(1)基本数据类型:如果输入参数只有一个,其数据类型可以是基本数据类型,也可以是自己定的类型:包括int,String,Date,Integer这些。

但是要注意,在接口中的 int类型对应parameterType为int,若前面声明的是  Integer类型,则后面mapper文件中也要写Integer类型,否则报错。     

//注意这里传递的类型:从controller传递过来的是Integer则,这个mapper中的parameterType必须是Integer
//若从Controller传递过来的是int,则mapper中parameterType必须是int。两者不能互用。

这个必须与controller层传递过来的类型一致。

另外在oo编程中,声明变量,能用包装类就用包装类,比如用Integer,而不用int。

int默认为0,Integer默认null。

持久层对象或者Controller、Service、Dao中用Integer。Mapper文件中用Integer

循环体,方法中用int。

 

                                             

这里回顾下java的基本数据类型:

基本数据类型和包装类的区别还是很大,这点估计你也是清楚的。
比如int a = 3;Integer b = new Integer(3);
a和b的值都是3,但a是值对象,b是引用对象,因此二者是不等同的。相较而言值对象使用起来更方便一些(不用手动创建对象已经实例化) char是字符型,比如 char c = 'd',这里用的是单引号,字符串用的是双引号(String s = "s"),
它并不是整数类型,只不过jdk会对照ascII表把它转成对应的数字值,我们才可以利用这个特性。
在一般的开发中我们用String比较多而char比较少,因为char的场景多半都可以用string来处理,但这并不是说char就没有作用。只不过取决于与你编写代码的严谨程度。
另外在处理buffer流时用的都是char。
再次强调char不是整数类型,char(字符类型)在内存中占2个字节,而int(整数类型)占4个字节

关于String与char的关系:

 

(2)复杂数据类型:包含java实体类或者多个参数,或者Map;

关于多个参数传入有两种方法:仔细看下面的区别:

Map参数示例:

a:一种是将两个字段封装成map来进行传递给mapper文件。

xml文件

<select id="selectTeacher" parameterType="Map" resultType="com.myapp.domain.Teacher">
select * from Teacher where c_id=#{id} and sex=#{sex}
</select>

java代码

Map<String,String> map=new HasMap<String,String>();
map.put("id","2");
map.put("sex","男");
List<Teacher> tList = teacherMapper.selectTeacher(map);
for (Teacher entityTemp : tList) {
System.out.println(entityTemp.toString()); }

b:第二种传入多个参数的方式:使用注解的方式来传入:

另外MyBatis还提供了一个使用注解来参入多个参数的方式。

这种方式需要在接口的参数上添加@Param注解

示例:

接口方法

public List<Teacher> selectTeacher(@Param(value="id") String id,@Param(value="sex") String sex); 

XML文件

<select id="selectTeacher" parameterType="map",这里可以写也可以不写。resultType="com.myapp.domain.Teacher">

select * from Teacher where c_id=#{id} and sex=#{sex}
</select>
这个xml文件中,
 

备注:

mysql与java数据类型的对应:

mybatis基础犯错总结的更多相关文章

  1. 朱晔和你聊Spring系列S1E6:容易犯错的Spring AOP

    阅读PDF版本 标题有点标题党了,这里说的容易犯错不是Spring AOP的错,是指使用的时候容易犯错.本文会以一些例子来展开讨论AOP的使用以及使用过程中容易出错的点. 几句话说清楚AOP 有关必要 ...

  2. mybatis基础系列(二)——基础语法、别名、输入映射、输出映射

    增删改查 mapper根节点及其子节点 mybatis框架需要读取映射文件创建会话工厂,映射文件是以<mapper>作为根节点,在根节点中支持9个元素,分别为insert.update.d ...

  3. MyBatis基础入门《五》核心配置文件

    MyBatis基础入门<五>核心配置文件 描述: 在前面的章节中,简单的学习使用了一下mybatis,对于配置文件没有过多详细说明. 这里先描述项目中的一个核心配置文件:mybatis-c ...

  4. Makefileeasy犯错的语法

    1.引言 近期学习android的Build系统,接触最多的自然就是Makefile语法.发现非常多easy出错的地方,不避开这些错误语法没法真正了解Makefile的内涵.以下就介绍遇到的一些让人困 ...

  5. myBatis 基础测试 表关联关系配置 集合 测试

    myBatis 基础测试 表关联关系配置 集合 测试 测试myelipse项目源码 sql 下载 http://download.csdn.net/detail/liangrui1988/599388 ...

  6. 致DBA:为什么你经常犯错,是因为你做的功课不够

    专职做DBA已经6年多的事件了,看同行.同事犯了太多的错误,自己也犯了非常多的错误.一路走来,感触非常深.然而绝大多数的错误其实都是很低级的错误.有的是因为不了解某个引擎的特性导致:有的是因为对线上环 ...

  7. spring 整合Mybatis 《报错集合,总结更新》

    错误:java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldExcepti ...

  8. JAVA之Mybatis基础入门--框架搭建与简单查询

    JAVA中,操作数据库有JDBC.hibernate.Mybatis等技术,今天整理了下,来讲一讲下Mybatis.也为自己整理下文档: hibernate是一个完全的ORM框架,是完全面向对象的.但 ...

  9. mybatis foreach报错It was either not specified and/or could not be found for the javaType Type handler

    或许是惯性思维,在mybatis使用foreach循环调用的时候,很多时候都是传一个对象,传一个List的情况很少,所以写代码有时候会不注意就用惯性思维方法做了. 今天向sql传参,传了一个List作 ...

随机推荐

  1. 高可用Kubernetes集群-12. 部署kubernetes-ingress

    参考文档: Github:https://github.com/kubernetes/ingress-nginx Kubernetes ingress:https://kubernetes.io/do ...

  2. 基于preteus的1602液晶显示器的学习(LM016L)

    (证明学过,以示纪念) 所谓1602就是每行可以显示16个字符,可以显示两行.1602液晶在工业中使用比较广泛,其基本都采用的是HD44780控制器,或者兼容该指令集,因此基于HD44780写的控制程 ...

  3. Matplotlib外观和基本配置笔记

    title: matplotlib 外观和基本配置笔记 notebook: Python tags:matplotlib --- 参考资料,如何使用matplotlib绘制出数据图形,参考另一篇mat ...

  4. 用 Python 构建一个极小的区块链

    虽然有些人认为区块链是一个早晚会出现问题的解决方案,但是毫无疑问,这个创新技术是一个计算机技术上的奇迹.那么,究竟什么是区块链呢? 区块链 以比特币(Bitcoin)或其它加密货币按时间顺序公开地记录 ...

  5. 遗传算法中几种不同选择算子及Python实现

    前言 本文对遗传算法中的几种选择策略进行了总结, 其中包括: Proportionate Roulette Wheel Selection Linear Ranking Selection Expon ...

  6. call appiy

    其实就是动态的改变this了,下面例子就说明了... function add(a, b){ console.dir(this); } function sub(a, b){ console.dir( ...

  7. Android开发第二阶段(3)

    今天:对闹钟代码的按钮事件进行了添加和修改.对监听器的相关应用也有了进一步的了解和深入. 明天:对主界面的代码的优化比如对按钮位置的调节等细节处理.

  8. Alpha冲刺——第五天

    Alpha第五天 听说 031502543 周龙荣(队长) 031502615 李家鹏 031502632 伍晨薇 031502637 张柽 031502639 郑秦 1.前言 任务分配是VV.ZQ. ...

  9. DataTable转List<T>集合

    #region DataTable转List集合 +static IList<T> DataTableToList<T>(DataTable dt) where T : cla ...

  10. lintcode-419-罗马数字转整数

    419-罗马数字转整数 给定一个罗马数字,将其转换成整数. 返回的结果要求在1到3999的范围内. 说明 什么是 罗马数字? https://en.wikipedia.org/wiki/Roman_n ...