UserMapper.java新增一个方法
package cn.bdqn.dao;
import java.util.List;
import cn.bdqn.pojo.User;
public interface UserMapper {
List<User> getUserList();
List<User> getUserLikeUserName(String userName); //模糊查询
List<User> getUserLikeUserNameAndUserRole(User user);
}
UserMapper.xml新增一个select
<?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="cn.bdqn.dao.UserMapper">
<select id="getUserList" resultType="cn.bdqn.pojo.User">
Select * from smbms_user
</select>
<select id="getUserLikeUserName" parameterType="String" resultType="user">
select * from smbms_user where userName like concat('%',#{userName},'%')
</select>
<select id="getUserLikeUserNameAndUserRole" parameterType="user" resultMap="userList">
select u.*,r.roleName from smbms_user u,smbms_role r
where
r.id=u.userRole
and userRole=#{userRole}
and userName like concat('%',#{userName},'%')
</select>
<resultMap type="user" id="userList">
<id column="id" property="id"/>
<result column="userName" property="userName" />
<result column="userCode" property="userCode" />
<result column="roleName" property="userRoleName" />
</resultMap>
</mapper>
实体类新增一个userRoleName,导入get/set方法,还有原来那个toString要重写
package cn.bdqn.pojo;
import java.util.Date;
public class User {
private Long id;
private String userCode;
private String userName;
private String userPassword;
private Integer gender;
private String phone;
private String address;
private Date birthday;
private Integer userRole;
private Integer createdBy;
private Date creationDate;
private Integer modifyBy;
private Date modifyDate;
private String userRoleName;//用户角色名称
public String getUserRoleName() {
return userRoleName;
}
public void setUserRoleName(String userRoleName) {
this.userRoleName = userRoleName;
}
@Override
public String toString() {
return "User [address=" + address + ", birthday=" + birthday
+ ", createdBy=" + createdBy + ", creationDate=" + creationDate
+ ", gender=" + gender + ", id=" + id + ", modifyBy="
+ modifyBy + ", modifyDate=" + modifyDate + ", phone=" + phone
+ ", userCode=" + userCode + ", userName=" + userName
+ ", userPassword=" + userPassword + ", userRole=" + userRole
+ ", userRoleName=" + userRoleName + "]";
}
public User() {
super();
// TODO Auto-generated constructor stub
}
public User(Long id, String userCode, String userName, String userPassword,
Integer gender, String phone, String address, Date birthday,
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.phone = phone;
this.address = address;
this.birthday = birthday;
this.userRole = userRole;
this.createdBy = createdBy;
this.creationDate = creationDate;
this.modifyBy = modifyBy;
this.modifyDate = modifyDate;
}
public Long getId() {
return id;
}
public void setId(Long 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 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 Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
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;
}
}
实体类改为:
package cn.bdqn.test;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;
import cn.bdqn.dao.UserMapper;
import cn.bdqn.pojo.User;
import cn.bdqn.util.MyBatisUtil;
public class Test {
/*private static Logger logger = Logger.getLogger("Test");*/
public static void main(String[] args) {
//getUserCount();
//getUserList();
//getUserByName(sqlSession);
SqlSession sqlSession = MyBatisUtil.getSqlSession();
User user=new User();
user.setUserName("孙");
user.setUserRole(3);
List<User> users = sqlSession.getMapper(UserMapper.class).getUserLikeUserNameAndUserRole(user);
for (User user1 : users) {
System.out.println(user1);
}
MyBatisUtil.closeSession(sqlSession);
}
/* private static void getUserByName(SqlSession sqlSession) {
List<User> users = sqlSession.getMapper(UserMapper.class).getUserLikeUserName("孙");
for (User user : users) {
System.out.println(user);
}
MyBatisUtil.closeSession(sqlSession);
}*/
/* public static void getUserList(){
SqlSession session = MyBatisUtil.getSqlSession();
//綁定Mapper接口
List<User> userList = session.getMapper(UserMapper.class).getUserList();
for (User user : userList) {
logger.debug("用户:" + user);
}
MyBatisUtil.closeSession(session);
}*/
/* private static void getUserCount() {
SqlSession session = MyBatisUtil.getSqlSession();
// 调用mapper文件进行数据操作
int count = session.selectOne("cn.bdqn.dao.UserMapper.count");
logger.debug("用户数量是:" + count);
MyBatisUtil.closeSession(session);
}*/
}
运行结果如下:
[DEBUG] 2018-09-29 23:28:00,114 org.apache.ibatis.transaction.jdbc.JdbcTransaction - Opening JDBC Connection
[DEBUG] 2018-09-29 23:28:00,432 org.apache.ibatis.datasource.pooled.PooledDataSource - Created connection 1551870003.
[DEBUG] 2018-09-29 23:28:00,435 cn.bdqn.dao.UserMapper.getUserLikeUserNameAndUserRole - ooo Using Connection [com.mysql.jdbc.JDBC4Connection@5c7fa833]
[DEBUG] 2018-09-29 23:28:00,436 cn.bdqn.dao.UserMapper.getUserLikeUserNameAndUserRole - ==> Preparing: select u.*,r.roleName from smbms_user u,smbms_role r where r.id=u.userRole and userRole=? and userName like concat('%',?,'%')
[DEBUG] 2018-09-29 23:28:00,463 cn.bdqn.dao.UserMapper.getUserLikeUserNameAndUserRole - ==> Parameters: 3(Integer), 孙(String)
User [address=北京市朝阳区管庄新月小区12楼, birthday=Sun Jan 04 00:00:00 CST 1981, createdBy=1, creationDate=Wed May 06 10:52:07 CST 2015, gender=2, id=10, modifyBy=null, modifyDate=null, phone=13387676765, userCode=sunlei, userName=孙磊, userPassword=0000000, userRole=3, userRoleName=普通员工]
User [address=北京市朝阳区建国门南大街10号, birthday=Sun Mar 12 00:00:00 CST 1978, createdBy=1, creationDate=Wed Nov 09 16:51:17 CST 2016, gender=2, id=11, modifyBy=null, modifyDate=null, phone=13367890900, userCode=sunxing, userName=孙兴, userPassword=0000000, userRole=3, userRoleName=普通员工]
[DEBUG] 2018-09-29 23:28:01,605 org.apache.ibatis.transaction.jdbc.JdbcTransaction - Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@5c7fa833]
[DEBUG] 2018-09-29 23:28:01,606 org.apache.ibatis.transaction.jdbc.JdbcTransaction - Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@5c7fa833]
[DEBUG] 2018-09-29 23:28:01,607 org.apache.ibatis.datasource.pooled.PooledDataSource - Returned connection 1551870003 to pool.
我想过滤我想要的信息,可以在mybatis-config.xml加一句
<setting name="autoMappingBehavior" value="NONE"/>
<?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="database.properties"></properties>
<!-- 日志 -->
<settings>
<setting name="logImpl" value="LOG4J" />
<setting name="autoMappingBehavior" value="NONE"/>
</settings>
<typeAliases>
<package name="cn.bdqn.pojo"/>
</typeAliases>
<!-- 运行环境 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.user}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="cn/bdqn/dao/UserMapper.xml" />
</mappers>
</configuration>
运行后效果如下:
[DEBUG] 2018-09-29 23:32:23,441 org.apache.ibatis.transaction.jdbc.JdbcTransaction - Opening JDBC Connection
[DEBUG] 2018-09-29 23:32:23,687 org.apache.ibatis.datasource.pooled.PooledDataSource - Created connection 1551870003.
[DEBUG] 2018-09-29 23:32:23,689 cn.bdqn.dao.UserMapper.getUserLikeUserNameAndUserRole - ooo Using Connection [com.mysql.jdbc.JDBC4Connection@5c7fa833]
[DEBUG] 2018-09-29 23:32:23,690 cn.bdqn.dao.UserMapper.getUserLikeUserNameAndUserRole - ==> Preparing: select u.*,r.roleName from smbms_user u,smbms_role r where r.id=u.userRole and userRole=? and userName like concat('%',?,'%')
[DEBUG] 2018-09-29 23:32:23,713 cn.bdqn.dao.UserMapper.getUserLikeUserNameAndUserRole - ==> Parameters: 3(Integer), 孙(String)
User [address=null, birthday=null, createdBy=null, creationDate=null, gender=null, id=10, modifyBy=null, modifyDate=null, phone=null, userCode=sunlei, userName=孙磊, userPassword=null, userRole=null, userRoleName=普通员工]
User [address=null, birthday=null, createdBy=null, creationDate=null, gender=null, id=11, modifyBy=null, modifyDate=null, phone=null, userCode=sunxing, userName=孙兴, userPassword=null, userRole=null, userRoleName=普通员工]
[DEBUG] 2018-09-29 23:32:23,762 org.apache.ibatis.transaction.jdbc.JdbcTransaction - Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@5c7fa833]
[DEBUG] 2018-09-29 23:32:23,764 org.apache.ibatis.transaction.jdbc.JdbcTransaction - Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@5c7fa833]
[DEBUG] 2018-09-29 23:32:23,765 org.apache.ibatis.datasource.pooled.PooledDataSource - Returned connection 1551870003 to pool.