Mybatis入力マッピング

6920 ワード

以前の入門プログラムでmybatisを利用したこれらの追加、削除、修正、クエリーの操作では、入力パラメータの入力マッピングはint、stringなどの簡単なJavaタイプであり、少し複雑なのは簡単なカスタムJava Beanオブジェクトである(POJO-Plain Ordinary Java Object)であり、複雑なマルチテーブル連合クエリーをサポートするために、ネストされたサブクエリなどは、入力するパラメータが1つのテーブルに対するクエリ条件ではない場合があります.この場合、カスタムパッケージタイプのPOJOを指定するか、hashMapオブジェクトを入力する必要があります.
>hashMapコレクションの使用
  SQL文を実行するときに入力されるパラメータが複雑な場合は、いくつかのテーブルに対するクエリー条件であり、開発時には各テーブルに対応するJava Beanオブジェクトが定義されます.しかし、現在はマルチテーブルの操作であり、条件も異なるテーブルのフィールドに対してフィルタクエリーを行う場合、HashMapセットをparameterTypeタイプとして入力することを考慮することができ、ここで#{}の文字はmapのkey値であればよい.
例:
クエリRoleテーブルのRoleNameは通常のユーザーであり、Userテーブルにはcnameが含まれ、王のレコードが含まれています.
Pojoオブジェクトの作成:
package com.langsin.pojo;

public class User {
	private Integer userId;
	private String userName;
	private String password;
	private String roleCode;
	private String cname;
	private String telphone;
	private String address;
    private String isLogin;
    
    @Override
	public String toString() {
		StringBuilder builder = new StringBuilder();
		builder.append("User [userId=").append(userId).append(", userName=").append(userName).append(", password=")
				.append(password).append(", roleCode=").append(roleCode).append(", cname=").append(cname)
				.append(", telphone=").append(telphone).append(", address=").append(address).append(", isLogin=")
				.append(isLogin).append("]");
		return builder.toString();
	}
	public Integer getUserId() {
		return userId;
	}
	public void setUserId(Integer userId) {
		this.userId = userId;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getRoleCode() {
		return roleCode;
	}
	public void setRoleCode(String roleCode) {
		this.roleCode = roleCode;
	}
	public String getCname() {
		return cname;
	}
	public void setCname(String cname) {
		this.cname = cname;
	}
	public String getTelphone() {
		return telphone;
	}
	public void setTelphone(String telphone) {
		this.telphone = telphone;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public String getIsLogin() {
		return isLogin;
	}
	public void setIsLogin(String isLogin) {
		this.isLogin = isLogin;
	}
    
    
	
}
package com.langsin.pojo;

public class Role {
	private Integer roleId;
	private String roleCode;
	private String roleName;
	
	public Integer getRoleId() {
		return roleId;
	}
	public void setRoleId(Integer roleId) {
		this.roleId = roleId;
	}
	public String getRoleCode() {
		return roleCode;
	}
	public void setRoleCode(String roleCode) {
		this.roleCode = roleCode;
	}
	public String getRoleName() {
		return roleName;
	}
	public void setRoleName(String roleName) {
		this.roleName = roleName;
	}
	
}
package com.langsin.pojo;

public class RoleUser extends User {
	private Integer roleId;
	private String roleCode;
	private String roleName;
	
	public Integer getRoleId() {
		return roleId;
	}
	public void setRoleId(Integer roleId) {
		this.roleId = roleId;
	}
	public String getRoleCode() {
		return roleCode;
	}
	public void setRoleCode(String roleCode) {
		this.roleCode = roleCode;
	}
	public String getRoleName() {
		return roleName;
	}
	public void setRoleName(String roleName) {
		this.roleName = roleName;
	}
	@Override
	public String toString() {
		StringBuilder builder = new StringBuilder();
		builder.append("RoleUser [roleId=").append(roleId).append(", roleCode=").append(roleCode).append(", roleName=")
				.append(roleName).append(", toString()=").append(super.toString()).append("]");
		return builder.toString();
	}
	
}

Mapperオブジェクト:

	
	
	
	
	

Mapperインタフェース:
public interface UserMapper {
	
	public List queryRoleUser(Map ruMap) throws Exception;

}

テストクラス:
@Test
	public void queryRoleUser() throws Exception{
		Map map=new HashMap<>();
		map.put("roleName", "    ");
		map.put("cname", "% %");
		UserMapper mapper=session.getMapper(UserMapper.class);
		List ruList=mapper.queryRoleUser(map);
		for (RoleUser roleUser : ruList) {
			System.out.println(roleUser);
		}
		session.close();
	}

>POJOカスタムタイプの使用:queryBeanを使用して、既存のpojoをベースに拡張する(一般的に集中したテーブルをベースに拡張する):
次の例では、Beanを拡張します.
package com.langsin.pojo;

public class UserQueryBean extends User {
	private String roleName;

	public String getRoleName() {
		return roleName;
	}

	public void setRoleName(String roleName) {
		this.roleName = roleName;
	}

}

Mapper構成:

	
	
	
	
	
	
	
	
	
	
	

Mapperインタフェース:
public interface UserMapper {
	
	public List queryRoleUser(Map ruMap) throws Exception;

	public List queryUserRoleName(UserQueryBean bean) throws Exception;
}

Mapperテストクラス:
@Test
	public void queryUserQoleName() throws Exception{
		UserQueryBean bean=new UserQueryBean();
		bean.setAddress("%  %");
		bean.setRoleName("    ");
		bean.setCname("% %");
		UserMapper mapper=session.getMapper(UserMapper.class);
		List ruList=mapper.queryUserRoleName(bean);
		for (RoleUser roleUser : ruList) {
			System.out.println(roleUser);
		}
		session.close();
	}