zoukankan      html  css  js  c++  java
  • mybatis基础犯错总结

    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数据类型的对应:

  • 相关阅读:
    P1019 单词接龙
    P1219 八皇后
    Find a way
    P1056 排座椅
    P1067 多项式输出
    关于前缀和,A
    洛谷P1223
    洛谷P1803
    洛谷P1208
    常用方法 Excel转换为DataSet
  • 原文地址:https://www.cnblogs.com/fengli9998/p/7859250.html
Copyright © 2011-2022 走看看