MyBatis的SQL语句映射文件详解(三)----多参数传递的几种方式
1.单一基本类型参数(String,int等)
单一的基本类型参数,将对应语句中的parameterType的值与参数的类型相同。然后直接 用“#{参数名}” 来获取
java代码
//String类型的参数 username
public User findUser(String usernumber) { return (User) sqlSessionTemplate.selectOne("findUserByUsernumber", usernumber); }
xml代码
//对应paramterType="string"
<select id="findUserByUsernumber" parameterType="string" resultType="User"> select * from user where usernumber = #{usernumber} </select>
2.Java实体类型参数
java实体类型参数:将parameterType的值设为对应的 Java实体类,然后用#{类的属性名}来获取
java代码
//User实体类
public void updateUser(User user) { sqlSessionTemplate.update("updateUser", user); }
xml代码
//将parameterType类型指向对应的类的具体地址(包名+类名),也可指向typeAlias中的别名(在mybatis.xml)文件中
<update id="updateUser" parameterType="User" > update user set username=#{username},loginname=#{loginname},loginpassword=#{loginpassword},sex=#{sex},birthday=#{birthday} where usernumber=#{usernumber} </update>
3.多个基本类型参数
在具体业务关系中,往往需要传多个参数,比如:登录----->用户名+密码
①利用map进行传参
将多个参数设置到map里,用#{键值}来取
public User findUser(String loginname, String loginpassword) { // TODO Auto-generated method stub Map<String,String> map=new HashMap<String, String>(); map.put("loginname", loginname); map.put("loginpassword", loginpassword); return (User) sqlSessionTemplate.selectOne("loginUser", map); }
<select id="loginUser" parameterType="map" resultType="User"> select * from user where loginname=#{loginname} and loginpassword=#{loginpassword} </select>
②利用注解方式
使用@Param("参数名")注解的方式,在sql语句中直接用#{参数名}取出
public User findUser2( @Param("loginname")String loginname, @Param("password")String password);
<select id="findUser2" parameterType="string" resultType="User"> select * from user where loginname=#{loginname} and password=#{password} </select>
③利用#{0.1.2....}来取
#{0}表示第一个参数,#{1}表示第二个参数,以此类推
public User findUser2(String loginname,String password);
<select id="findUser2" parameterType="string" resultType="User"> select * from user where loginname=#{0} and password=#{1} </select>