Mybatis(7):将传参封装为Map进行传递

来源:互联网 发布:厦门公交线路查询软件 编辑:程序博客网 时间:2024/06/06 04:39

四部曲:

1.写接口  +  2.写映射sql  + 3.把mapper注册到mybatis的配置文件  + 4.写单元测试和运行


(1)首先新建一个User.java文件,作为这次的实体类,注意一定要有setter方法(mybatis通过setter访问器进行读取)

package com.smbms.entities;import java.util.Date;import java.util.List;public class User {private Integer id;private String userCode;private String userName;private String userPassword;private Integer gender;private Date birthday;private String phone;private String address ;private Integer userRole;private Integer createdBy;private Date creationDate;private Integer modifyBy;private Date modifyDate;private String userRoleName;private Role role;private List<Address> addressList;public List<Address> getAddressList() {return addressList;}public void setAddressList(List<Address> addressList) {this.addressList = addressList;}public Role getRole() {return role;}public void setRole(Role role) {this.role = role;}public String getUserRoleName() {return userRoleName;}public void setUserRoleName(String userRoleName) {this.userRoleName = userRoleName;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUserCode() {return userCode;}public void setUserCode(String userCode) {this.userCode = userCode;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getUserPassword() {return userPassword;}public void setUserPassword(String userPassword) {this.userPassword = userPassword;}public Integer getGender() {return gender;}public void setGender(Integer gender) {this.gender = gender;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public Integer getUserRole() {return userRole;}public void setUserRole(Integer userRole) {this.userRole = userRole;}public Integer getCreatedBy() {return createdBy;}public void setCreatedBy(Integer createdBy) {this.createdBy = createdBy;}public Date getCreationDate() {return creationDate;}public void setCreationDate(Date creationDate) {this.creationDate = creationDate;}public Integer getModifyBy() {return modifyBy;}public void setModifyBy(Integer modifyBy) {this.modifyBy = modifyBy;}public Date getModifyDate() {return modifyDate;}public void setModifyDate(Date modifyDate) {this.modifyDate = modifyDate;}public User(Integer id, String userCode, String userName, String userPassword, Integer gender, Date birthday,String phone, String address, Integer userRole, Integer createdBy, Date creationDate, Integer modifyBy,Date modifyDate) {super();this.id = id;this.userCode = userCode;this.userName = userName;this.userPassword = userPassword;this.gender = gender;this.birthday = birthday;this.phone = phone;this.address = address;this.userRole = userRole;this.createdBy = createdBy;this.creationDate = creationDate;this.modifyBy = modifyBy;this.modifyDate = modifyDate;}public User() {super();// TODO 自动生成的构造函数存根}@Overridepublic String toString() {return "User [id=" + id + ", userCode=" + userCode + ", userName=" + userName + ", userPassword=" + userPassword+ ", gender=" + gender + ", birthday=" + birthday + ", phone=" + phone + ", address=" + address+ ", userRole=" + userRole + ", createdBy=" + createdBy + ", creationDate=" + creationDate+ ", modifyBy=" + modifyBy + ", modifyDate=" + modifyDate + "]";}}


(2)写接口方法:


package com.smbms.dao;import java.util.List;import java.util.Map;import org.apache.ibatis.annotations.Param;import com.smbms.entities.User;public interface UserMapper {public List<User> getUserListByMap(Map<String,String> userMap);}

(3)定义映射文件的sql:


<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.smbms.dao.UserMapper"><select id="getUserListByMap" resultType="com.smbms.entities.User" parameterType="map">select * from smbms_user where username=#{uName} and userRole=#{uRole}</select> </mapper> 

(4)在全局配置文件中注册:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd" > <configuration> <properties resource="datasources.properties"/> <settings> <setting name="logImpl" value="LOG4J"/> </settings> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"><property name="driver" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.usename}"/><property name="password" value="${jdbc.password}"/></dataSource> </environment> </environments> <mappers> <mapper resource="com/smbms/dao/UserMapper.xml"/> <mapper resource="com/smbms/dao/ProviderMapper.xml"/> </mappers> </configuration>


(5)编写单元测试:

package com.smbms.entities;import java.io.IOException;import java.io.InputStream;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import org.junit.Test;import com.smbms.dao.ProviderMapper;import com.smbms.dao.UserMapper;public class UserTest {public SqlSession getSqlSession() throws IOException{String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory build = new SqlSessionFactoryBuilder().build(inputStream);SqlSession openSession = build.openSession();return openSession;}//多条件查询--Map@Testpublic void test05 () throws IOException {Map<String,String> userMap = new HashMap<String,String>();List<User> userlist = new ArrayList<User> ();userMap.put("uName","mmb");userMap.put("uRole","110");SqlSession session = getSqlSession();UserMapper mapper = session.getMapper(UserMapper.class);List<User> userByUsername = mapper.getUserListByMap(userMap);for(User user1:userByUsername){System.out.println("**"+user1.toString());}}}

综上,就是一个将传参封装为Map进行传递的Spring Demo。