码迷,mamicode.com
首页 > 其他好文 > 详细

2.select查询用法

时间:2018-08-05 13:02:37      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:tsql   app   head   标识符   class   extend   info   strong   rom   

1.定义查询接口

UserMapper.java

package tk.mybatis.simple.mapper;

import tk.mybatis.simple.model.SysRole;
import tk.mybatis.simple.model.SysUser;

import java.util.List;

/**
 * @author weihu
 * @date 2018/8/3/003 0:01
 */
public interface UserMapper {
    /**
     * 通过id查询用户,selectById()方法名与配置的xml文件中的id一致
     */
    SysUser selectById(Long id);

    /**
     * 查询全部用户
     */
    List<SysUser> selectAll();

    List<SysRole> selectRolesByUserId(Long userId);
}

 

2.配置对应的xml文件

UserMapper.xml

<?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">
<!--sql语句映射文件-->

<!--因为已经配置了别名,所以resultType可以直接写类名,没有配置的话就要写类全名-->
<mapper namespace="tk.mybatis.simple.mapper.UserMapper">

    <resultMap id="userMap" type="tk.mybatis.simple.model.SysUser">
        <id property="id" column="id"/>
        <result property="userName" column="user_name"/>
        <result property="userPassword" column="user_password"/>
        <result property="userEmail" column="user_email"/>
        <result property="userInfo" column="user_info"/>
        <result property="headImg" column="head_img"/>
        <result property="createTime" column="create_time"/>
    </resultMap>
    <select id="selectById" resultMap="userMap">
       SELECT * from sys_user WHERE id=#{id}
   </select>

    <select id="selectAll" resultType="tk.mybatis.simple.model.SysUser">
               SELECT id,
                   user_name userName,
                   user_password userPassword,
                   user_email userEmail,
                   user_info userInfo,
                   head_img headImg,
                 create_time createTime
               FROM
                     sys_user
    </select>

    <select id="selectRolesByUserId" resultType="tk.mybatis.simple.model.SysRole">
        select
            r.id,
            r.role_name roleName,
            r.enabled,
            r.create_by createBy,
            r.create_time createTime,
            u.user_name as "user.userName",
            u.user_email as "user.userEmail"
        from sys_user u
        inner join sys_user_role ur on u.id=ur.user_id
        inner join sys_role r on ur.role_id=r.id
        where u.id=#{userId}
    </select>
</mapper>

 

<select>:映射查询语句使用的标签

id:命名空间的唯一标识符,可用来代表这条语句

resultMap:用于设置返回值的类型和映射关系

#{id}:MyBatis SQL中使用预编译参数的一种方式

property:对应实体类字段

column:对应数据库字段

 

3.实体类

SysUser.java

package tk.mybatis.simple.model;

import java.util.Arrays;
import java.util.Date;

/**
 * @author weihu
 * @date 2018/8/2/002 23:22
 * @desc SysUser实体类
 */
public class SysUser {
    private Long id;
    private String userName;
    private String userPassword;
    private String userEmail;
    private String userInfo;
    private byte[] headImg;
    private Date createTime;

    public Long getId() {
        return id;
    }

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

    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 String getUserEmail() {
        return userEmail;
    }

    public void setUserEmail(String userEmail) {
        this.userEmail = userEmail;
    }

    public String getUserInfo() {
        return userInfo;
    }

    public void setUserInfo(String userInfo) {
        this.userInfo = userInfo;
    }

    public byte[] getHeadImg() {
        return headImg;
    }

    public void setHeadImg(byte[] headImg) {
        this.headImg = headImg;
    }

    public Date getCreateTime() {
        return createTime;
    }

    @Override
    public String toString() {
        return "SysUser{" +
                "id=" + id +
                ", userName=‘" + userName + \‘ +
                ", userPassword=‘" + userPassword + \‘ +
                ", userEmail=‘" + userEmail + \‘ +
                ", userInfo=‘" + userInfo + \‘ +
                ", headImg=" + Arrays.toString(headImg) +
                ", createTime=" + createTime +
                };
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
}

 

4.BaseMapperTest.java

package tk.mybatis.simple.mapper;

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.BeforeClass;

import java.io.IOException;
import java.io.Reader;

/**
 * @author weihu
 * @date 2018/8/4/004 17:58
 * @desc 基础测试类
 */
public class BaseMapperTest {
    private static SqlSessionFactory sqlSessionFactory;
    @BeforeClass
    public static void init(){
        try {
            Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
            sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    //获取sqlSession
    public SqlSession getSqlSession() {
        return sqlSessionFactory.openSession();
    }
}

UserMapperTest.java

package tk.mybatis.simple.mapper;

import org.apache.ibatis.session.SqlSession;
import org.junit.Assert;
import org.junit.Test;
import tk.mybatis.simple.model.SysRole;
import tk.mybatis.simple.model.SysUser;

import java.util.List;

/**
 * @author weihu
 * @date 2018/8/5/005 9:34
 * @desc
 */
public class UserMapperTest extends BaseMapperTest {

    /**
     * 根据Id查询用户信息
     */
    @Test
    public void testSelectById(){
        SqlSession sqlSession = getSqlSession();
        try {
            //获取UserMapper接口
         UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            SysUser sysUser = userMapper.selectById(1L);
            System.out.println(sysUser);
            System.out.println(sysUser.getUserName());
            System.out.println(sysUser.getCreateTime());
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            sqlSession.close();
        }


    }

    /**
     * 查询所有用户信息
     */
    @Test
    public void selectAllUserTest() {
        SqlSession sqlSession = getSqlSession();
        try {
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            List<SysUser> sysUsers = userMapper.selectAll();
            //遍历用户列表
            for (SysUser user:sysUsers){
                System.out.println(user);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            sqlSession.close();
        }

    }

    @Test
    public void testSelectRolesByUserId(){
        SqlSession sqlSession = getSqlSession();
        try {
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            List<SysRole> roleList = userMapper.selectRolesByUserId(1L);
            System.out.println(roleList);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            sqlSession.close();
        }

    }
}

 

 

多表关联查询

UserMapper.xml

<?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">
<!--sql语句映射文件-->

<!--因为已经配置了别名,所以resultType可以直接写类名,没有配置的话就要写类全名-->
<mapper namespace="tk.mybatis.simple.mapper.UserMapper">

    <select id="selectRolesByUserId" resultType="tk.mybatis.simple.model.SysRole">
        select
            r.id,
            r.role_name roleName,
            r.enabled,
            r.create_by createBy,
            r.create_time createTime,
            u.user_name as "user.userName",
            u.user_email as "user.userEmail"
        from sys_user u
        inner join sys_user_role ur on u.id=ur.user_id
        inner join sys_role r on ur.role_id=r.id
        where u.id=#{userId}
    </select>
</mapper>

 注意:

u.user_name as "user.userName",
u.user_email as "user.userEmail"
这里设置别名的时候,使用的是"user.属性名",user是SysRole中增加的属性,userName和userEmail是SysUer对象中的属性

SysRole.java
package tk.mybatis.simple.model;

import java.util.Date;

/**
 * @author weihu
 * @date 2018/8/2/002 23:19
 * @desc
 */
public class SysRole {
    private Long id;
    private String roleName;
    private int enabled;
    private String createBy;
    private Date createTime;

    private SysUser user;

    public SysUser getUser() {
        return user;
    }

    public void setUser(SysUser user) {
        this.user = user;
    }

    public Long getId() {
        return id;
    }

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

    public String getRoleName() {
        return roleName;
    }

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

    public int getEnabled() {
        return enabled;
    }

    public void setEnabled(int enabled) {
        this.enabled = enabled;
    }

    public String getCreateBy() {
        return createBy;
    }

    public void setCreateBy(String createBy) {
        this.createBy = createBy;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
}

 

 
UserMapperTest.class
package tk.mybatis.simple.mapper;

import org.apache.ibatis.session.SqlSession;
import org.junit.Assert;
import org.junit.Test;
import tk.mybatis.simple.model.SysRole;
import tk.mybatis.simple.model.SysUser;

import java.util.List;

/**
 * @author weihu
 * @date 2018/8/5/005 9:34
 * @desc
 */
public class UserMapperTest extends BaseMapperTest {

  /**
     * 多表查询
     */
    @Test
    public void testSelectRolesByUserId(){
        SqlSession sqlSession = getSqlSession();
        try {
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            List<SysRole> roleList = userMapper.selectRolesByUserId(1L);
            System.out.println(roleList);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            sqlSession.close();
        }

    }
}

 

2.select查询用法

标签:tsql   app   head   标识符   class   extend   info   strong   rom   

原文地址:https://www.cnblogs.com/weihu/p/9424941.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!