Mybatis知识点汇总Mybatis的历史及作用就不在累述Mybatis是一个ORM框架可以说Mybatis是一个半自动的ORM框架,Hibernate是全自动的Mapper映射文件<mappernamespace=""><selectid="get"resultMap,resultType,,parameterType,>Selectconfig_key,config_value,create_date,update_datefromwechat_configwhereconfig_key='${config_key}'</select>namespace:是相应mapper接口的文件路径id:是mapper接口的方法名parameterType:有基本数据类型和JAVA复杂数据类型基本数据类型:包含int,String,Date等。基本数据类型作为传参,只能传入一个。通过#{参数名}即可获取传入的值复杂数据类型:包含JAVA实体类、Map。通过#{属性名}即可获取传入的值,用于对应的mapper接口方法接受的参数类型。:parameterType="String"mapper接口方法一般接受一个参数,可以通过使用***@Param注释将多个参数绑定到一个map做为输入参数。:UserselectByPrimaryKey(Integerid);sql映射:SQL语句块<sqlid="Base_Column_List">id,tname,tpwd</sql><selectid="selectByPrimaryKey"resultMap="BaseResultMap"parameterType=""><select><includerefid="Base_Column_List"/>=#{id,jdbcType=INTEGER}</select>对于简单数据类型,sql映射语句中直接#{变量名}这种方式引用就行了,其实这里的”变量名”可以是任意的。mapper接口方法传递过来的值,至于其叫什么名字其实是不可考也没必要知道的。而且JAVA反射只能获取方法参数的类型,是无从得知方法参数的名字的。比如上面这个示例中,使用#{id}来引用只是比较直观而已,使用其他名字来引用也是一样的。所以当在if元素中test传递的参数时,就必须要用_parameter来引用这个参数了。像这样:<selectid="selectByPrimaryKey"resultMap="BaseResultMap"parameterType="">select<includerefid="Base_Column_List"/>fromtb_user<iftest="_parameter!=0">whereid=#{id,jdbcType=INTEGER}</if></select>如果test测试条件中使用id就会提示错误,因为这个参数其实没有名字,只是一个值或引用而已,只能使用_parameter来引用。(正确)如果:<iftest="cmpid!=0">andcmpid=#{cmpid}</if>则报错:Thereisnogetterforpropertynamed'cmpid'in''原因:Mybatis默认采用ONGL解析参数,。Integer对象没有cmpid属性。如果不解析参数,mybatis自动识别传入的参数,不会报错。解决办法:方法1:<iftest="_parameter!=0">andcmpid=#{_parameter}</if>参数名全部改为_parameter方法2:接口类:Campusinfosel_campusinfo(intcmpid);改为:Campusinfosel_campusinfo(***@Param(value="cmpid")intcmpid);方法3:,sql映射语句中就可以直接引用对象的属性名了,这里的属性名是实实在在的真实的名字,不是随意指定的。mapper接口方法:1intinsert(Useruser);sql映射:<insertid="insert"parameterType="User"useGeneratedKeys="true"keyProperty="id">inserti
Mybatis知识点汇总 来自淘豆网www.taodocs.com转载请标明出处.