mybaits参数传递的四种方式

今天讲讲mybaits传递参数的四种方式

1.通过顺序来传递参数

Mapper接口

User getuNameAnduAccount(String uAccount,String uName);

Mapper.xml文件

	<!-- User getuNameAnduAccount(String uAccount,String uName); -->
	<select id="getuNameAnduAccount" resultMap="UserResultMap2">
		select * from user where user_account = #{param1} and user_name = #{param2}
	</select>

或者这么写

	<!-- User getuNameAnduAccount(String uAccount,String uName); -->
	<select id="getuNameAnduAccount" resultMap="UserResultMap2">
		select * from user where user_account = #{arg0} and user_name = #{arg1}
	</select>

这种方法不建议使用,sql层表达不直观,且一旦顺序调整容易出错。

2.通过@Param注解来传递参数

Mapper接口

User getuNameAnduAccount(@Param("uAccount")String uAccount,@Param("uName")String uName);

Mapper.xml文件

	<!-- User getuNameAnduAccount(String uAccount,String uName); -->
	<select id="getuNameAnduAccount" resultMap="UserResultMap2">
		select * from user where user_account = #{uAccount} and user_name = #{uName}
	</select>

#{}里面的名称对应的是注解 @Param括号里面修饰的名称。

这种方法在参数不多的情况还是比较直观的,推荐使用。

3.Java Bean 来传递参数

User实体类

public class User implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = 2742670276778081094L;
	private Integer id;
	private String uName;
	private String uAccount;
	private String uPassword;
	private String uGender;
	private Timestamp uCreateTime;
	private Integer uState;
	private Set<Role> roles;

	public User() {
	}

	public User(String uName, String uAccount, String uPassword, String uGender, Timestamp uCreateTime,
			Integer uState) {
		this.uName = uName;
		this.uAccount = uAccount;
		this.uPassword = uPassword;
		this.uGender = uGender;
		this.uCreateTime = uCreateTime;
		this.uState = uState;
	}

	public User(String uName, String uAccount, String uPassword, String uGender, Timestamp uCreateTime, Integer uState,
			Set<Role> roles) {
		this.uName = uName;
		this.uAccount = uAccount;
		this.uPassword = uPassword;
		this.uGender = uGender;
		this.uCreateTime = uCreateTime;
		this.uState = uState;
		this.roles = roles;
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getuName() {
		return uName;
	}

	public void setuName(String uName) {
		this.uName = uName;
	}

	public String getuAccount() {
		return uAccount;
	}

	public void setuAccount(String uAccount) {
		this.uAccount = uAccount;
	}

	public String getuPassword() {
		return uPassword;
	}

	public void setuPassword(String uPassword) {
		this.uPassword = uPassword;
	}

	public String getuGender() {
		return uGender;
	}

	public void setuGender(String uGender) {
		this.uGender = uGender;
	}

	public Timestamp getuCreateTime() {
		return uCreateTime;
	}

	public void setuCreateTime(Timestamp uCreateTime) {
		this.uCreateTime = uCreateTime;
	}

	public Integer getuState() {
		return uState;
	}

	public void setuState(Integer uState) {
		this.uState = uState;
	}

	public Set<Role> getRoles() {
		return roles;
	}

	public void setRoles(Set<Role> roles) {
		this.roles = roles;
	}

	@Override
	public String toString() {
		return "User [id=" + id + ", uName=" + uName + ", uAccount=" + uAccount + ", uPassword=" + uPassword
				+ ", uGender=" + uGender + ", uCreateTime=" + uCreateTime + ", uState=" + uState + ", roles=" + roles
				+ "]";
	}

}

Mapper接口

User getuNameAnduAccount(User user);

Mapper.xml文件

	<!-- User getuNameAnduAccount(User user);-->
	<select id="getuNameAnduAccount" resultMap="UserResultMap2">
		select * from user where user_account = #{uAccount} and user_name = #{uName}
	</select>

#{}里面的名称对应的是 User类里面的成员属性

4.使用Map来传递参数

Mapper接口

User getuNameAnduAccount(Map<String, Object> map);

Mapper.xml文件

	<!-- User getuNameAnduAccount(Map<String, Object> map);-->
	<select id="getuNameAnduAccount" resultMap="UserResultMap2">
		select * from user where user_account = #{uAccount} and user_name = #{uName}
	</select>

#{}里面的名称对应的是 Map里面的key名称。

这种方法适合传递多个参数,且参数易变能灵活传递的情况。

猜你喜欢

转载自blog.csdn.net/laogay_tansen/article/details/81389428