MyBatis传入参数与ParameterType总结(二)

mybatis的insert、update、delete、select中都提到了parameterType这个元素。

那么,这么爱上镜的它究竟怎么使用呢?听我唠唠。

一、接口中的参数类型

    我暂且分为三类:基本数据类型、POJO类、HashMap类

    你也可以把POJO类和HashMap归为复杂数据类型,均可。


二、接收参数的方式

a、#{参数} 预编译类型

b、${}  非预编译(直接引用sql拼接,但是不能防止sql注入)

    基本数据类型只能传入一个参数,一般使用 #{参数}获取,复杂数据类型用 #{属性名},map中则用#{key}获取;

    ${} 去接收参数,在一个参数情况时,默认必须使用${value}获取参数值

比如:UserDaoImpl.xml

<update id="updateUser" parameterType="cn.zgg.mybatis.pojo.User">
		UPDATE tb_user 
		SET 
		user_name=#{userName},
		password=#{password},
		name=#{name},
		age=#{age},
		sex=#{sex},
		birthday=#{birthday},
		updated=NOW()
		WHERE
		(id=#{id});
	</update>

java类:

/*
	 * 修改用户
	 */
	public void updateUser(User user);

测试类:

@Test
	public void testUpdateUser() {
		User user = this.userDao.queryUserById(1l);
		user.setAge(12);
		user.setName("wyll");
		this.userDao.updateUser(user);
	}

总结:接口名与id值一致,参数类型是自定义包装POJO类,这里写的是User类的全路径。


三、注解

      1)、  mapper接口一般只接收一个参数,不过呢,你也可以通过使用@Param注解将多个参数绑定起来,作为一个map输入参数;

        2)、mapper借口如何传递多个参数呢?

        有两种方式:

                       a 、默认规则获取参数:{0,1,param1,param2}

                        b、使用@Param注解指定参数名(最佳方案)

                            这时,映射文件就可以通过${}或者#{}对应参数名获取参数


四、返回值类型

    注意了注意了!!!

    ResultMap 是MyBatis中最重要最强大的元素

    为什么这么吹?

    因为,它解决了两大问题:POJO属性名和表结构字段名不一致的问题;

                                            完成高级查询:比如说:一对一、一对多、多对多。

    当然了,驼峰命名法也是可以解决属性和表结构不对应的问题的,只要在mabatis配置文件加入

    <setting name="mapUnderscoreToCamelCase"  value="true"/>解决;

    还有sql中使用别名,不过我本人不喜欢,因为懒喽,嘿嘿。

    



猜你喜欢

转载自blog.csdn.net/m0_37597572/article/details/79850772