欢迎来到天天文库
浏览记录
ID:38583429
大小:54.50 KB
页数:6页
时间:2019-06-15
《MyBatis传入参数与parameterType》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、MyBatis传入参数与parameterTypeDecember25,2013DatabaseJavaopenwaresMybatis的Mapper文件中的select、insert、update、delete元素中有一个parameterType属性,用于对应的mapper接口方法接受的参数类型。可以接受的参数类型有基本类型和复杂类型。mapper接口方法一般接受一个参数,可以通过使用@Param注释将多个参数绑定到一个map做为输入参数。1.简单数据类型mapper接口方法:1UserselectByPrimaryKey(Integerid);sql映射:1234562、="selectByPrimaryKey"resultMap="BaseResultMap"parameterType="java.lang.Integer">selectfrombase.tb_userwhereid=#{id,jdbcType=INTEGER}对于简单数据类型,sql映射语句中直接#{变量名}这种方式引用就行了,其实这里的"变量名"可以是任意的。mapper接口方法传递过来的值,至于其叫什么名字其实是不可考也没必要知道的。而且JAVA反射只能获取方法参数的类型,是无从得知方法参数的名字的3、。比如上面这个示例中,使用#{id}来引用只是比较直观而已,使用其他名字来引用也是一样的。所以当在if元素中test传递的参数时,就必须要用_parameter来引用这个参数了。像这样:12345678selectfromtb_userwhereid=#{id,jdbcType=INTEGER}4、>如果test测试条件中使用id就会提示错误,因为这个参数其实没有名字,只是一个值或引用而已,只能使用_parameter来引用。1.对象类型传入JAVA复杂对象类型的话,sql映射语句中就可以直接引用对象的属性名了,这里的属性名是实实在在的真实的名字,不是随意指定的。mapper接口方法:1intinsert(Useruser);sql映射:123insertintotb_user(name,sex)values(#{5、name,jdbcType=CHAR},#{sex,jdbcType=CHAR})虽然可以明确的引用对象的属性名了,但如果要在if元素中测试传入的user参数,仍然要使用_parameter来引用传递进来的实际参数,因为传递进来的User对象的名字是不可考的。如果测试对象的属性,则直接引用属性名字就可以了。测试user对象:1测试user对象的属性:11.map类型传入map类型,直接通过#{keyname}就可以引用到键对应的值。使用@param注释的多个参数值也会组装成一个map数据结构,和直6、接传递map进来没有区别。mapper接口:1intupdateByExample(@Param("user")Useruser,@Param("example")UserExampleexample);sql映射:12345updatetb_user67setid=#{user.id,jdbcType=INTEGER},...注意这里测试传7、递进来的map是否为空,仍然使用_parameter1.集合类型YoucanpassaListinstanceoranArraytoMyBatisasaparameterobject.Whenyoudo,MyBatiswillautomaticallywrapitinaMap,andkeyitbyname.Listinstanceswillbekeyedtothename"list"andarrayinsta
2、="selectByPrimaryKey"resultMap="BaseResultMap"parameterType="java.lang.Integer">selectfrombase.tb_userwhereid=#{id,jdbcType=INTEGER}对于简单数据类型,sql映射语句中直接#{变量名}这种方式引用就行了,其实这里的"变量名"可以是任意的。mapper接口方法传递过来的值,至于其叫什么名字其实是不可考也没必要知道的。而且JAVA反射只能获取方法参数的类型,是无从得知方法参数的名字的
3、。比如上面这个示例中,使用#{id}来引用只是比较直观而已,使用其他名字来引用也是一样的。所以当在if元素中test传递的参数时,就必须要用_parameter来引用这个参数了。像这样:12345678selectfromtb_userwhereid=#{id,jdbcType=INTEGER}4、>如果test测试条件中使用id就会提示错误,因为这个参数其实没有名字,只是一个值或引用而已,只能使用_parameter来引用。1.对象类型传入JAVA复杂对象类型的话,sql映射语句中就可以直接引用对象的属性名了,这里的属性名是实实在在的真实的名字,不是随意指定的。mapper接口方法:1intinsert(Useruser);sql映射:123insertintotb_user(name,sex)values(#{5、name,jdbcType=CHAR},#{sex,jdbcType=CHAR})虽然可以明确的引用对象的属性名了,但如果要在if元素中测试传入的user参数,仍然要使用_parameter来引用传递进来的实际参数,因为传递进来的User对象的名字是不可考的。如果测试对象的属性,则直接引用属性名字就可以了。测试user对象:1测试user对象的属性:11.map类型传入map类型,直接通过#{keyname}就可以引用到键对应的值。使用@param注释的多个参数值也会组装成一个map数据结构,和直6、接传递map进来没有区别。mapper接口:1intupdateByExample(@Param("user")Useruser,@Param("example")UserExampleexample);sql映射:12345updatetb_user67setid=#{user.id,jdbcType=INTEGER},...注意这里测试传7、递进来的map是否为空,仍然使用_parameter1.集合类型YoucanpassaListinstanceoranArraytoMyBatisasaparameterobject.Whenyoudo,MyBatiswillautomaticallywrapitinaMap,andkeyitbyname.Listinstanceswillbekeyedtothename"list"andarrayinsta
4、>如果test测试条件中使用id就会提示错误,因为这个参数其实没有名字,只是一个值或引用而已,只能使用_parameter来引用。1.对象类型传入JAVA复杂对象类型的话,sql映射语句中就可以直接引用对象的属性名了,这里的属性名是实实在在的真实的名字,不是随意指定的。mapper接口方法:1intinsert(Useruser);sql映射:123insertintotb_user(name,sex)values(#{
5、name,jdbcType=CHAR},#{sex,jdbcType=CHAR})虽然可以明确的引用对象的属性名了,但如果要在if元素中测试传入的user参数,仍然要使用_parameter来引用传递进来的实际参数,因为传递进来的User对象的名字是不可考的。如果测试对象的属性,则直接引用属性名字就可以了。测试user对象:1测试user对象的属性:11.map类型传入map类型,直接通过#{keyname}就可以引用到键对应的值。使用@param注释的多个参数值也会组装成一个map数据结构,和直
6、接传递map进来没有区别。mapper接口:1intupdateByExample(@Param("user")Useruser,@Param("example")UserExampleexample);sql映射:12345updatetb_user67setid=#{user.id,jdbcType=INTEGER},...注意这里测试传
7、递进来的map是否为空,仍然使用_parameter1.集合类型YoucanpassaListinstanceoranArraytoMyBatisasaparameterobject.Whenyoudo,MyBatiswillautomaticallywrapitinaMap,andkeyitbyname.Listinstanceswillbekeyedtothename"list"andarrayinsta
此文档下载收益归作者所有