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オブジェクトの作成:
Mapperオブジェクト:
Mapperインタフェース:
テストクラス:
>POJOカスタムタイプの使用:queryBeanを使用して、既存のpojoをベースに拡張する(一般的に集中したテーブルをベースに拡張する):
次の例では、Beanを拡張します.
Mapper構成:
Mapperインタフェース:
Mapperテストクラス:
>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();
}