2.select查询用法
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查询用法的更多相关文章
- 数据库中增加操作insert into的用法和查询select的用法
insert into的用法 1.一条insert into 可以插入多条记录 2.insert into 能判断主键是否冲突,和做出冲突处理 如果主键冲突的话会报错,还能写成如果冲突就更新的形式格式 ...
- Select查询命令
一开始SELECT查询的命令为 SELECT * FROM employee; SELECT 要查询的列名 FROM 表名字 WHERE 限制条件; 若要查询所有内容,就用*代 ...
- MyBatis基础入门《四》接口方式.Select查询集合
MyBatis基础入门<四>接口方式.Select查询集合 描述: 在<MyBatis基础入门<二>Select查询>中有说过,SQLSession有两种用法,这里 ...
- mysql union 和 left join 结合查询用法
union 和 left join 结合查询用法 SELECT u.nickname,z.group_comming_type,z.id,z.user_id,z.title,z.create_time ...
- mysql DML select查询
windows上的操作 1.从官网下载mysql 下载navicat,用来连接mysql的 2.打开运行启动mysql 3.在navicat上的连接打开新建连接 然后输入链接名,连接名就是用户名,自己 ...
- mysql子查询用法
mysql子查询用法 1 可以当值来用<pre>select id from hcyuyin_share where id=(select id from hcyuyin_share li ...
- 5- MySQL数据库SELECT查询操作
复习: 数据类型: 数值型:整数(int,tinyint,smallint,bigint,mediumint) 浮点型(float ,double,decimal) 字符型:char(固定长度) ,v ...
- 关于SubSonic3.0插件使用SqlQuery或Select查询时产生的System.NullReferenceException异常修复
早上在编写执行用例时,突然爆异常System.NullReferenceException: 未将对象引用设置到对象的实例 执行代码:
- 为什么忘记commit也会造成select查询的性能问题
今天遇到一个很有意思的问题,一个开发人员反馈在测试服务器ORACLE数据库执行的一条简单SQL语句非常缓慢,他写的一个SQL没有返回任何数据,但是耗费了几分钟的时间.让我检查分析一下原因,分析解决过后 ...
随机推荐
- Cannot switch on a value of type String for source level below 1.7. Only convertible int values or enum variables are permitted
在java中写switch代码时,参数用的是string,jdk用的是1.8,但是还是报错,说不支持1.7版本以下的,然后查找了项目中的一些文件,打开一个文件如下,发现是1.6的版本,好奇怪啊,按照e ...
- NOI导刊 2018河南郑州游记
前言 本蒟蒻来自浙江的弱市弱校,因为不想两年\(OI\)一场空,以及想出去玩,所以与同届大佬一起报了\(NOI\)导刊,希望能留下点不错的记忆吧. \(Day\ 0\) \(10\)月\(1\)日 经 ...
- Codeforces 798C. Mike and gcd problem 模拟构造 数组gcd大于1
C. Mike and gcd problem time limit per test: 2 seconds memory limit per test: 256 megabytes input: s ...
- jQuery动画函数回调
$("#show").click(function () { //function 是显示完成之后的回调函数 $("p").show(2000,function ...
- 外部javascript形式
***.js: /** * 收起或者展开筛选框 */ function filterType(){ $("#filter_box_id").toggle(500); var sha ...
- iOS中四种实例变量的范围类型@private@protected@public@package
文档上记录是这样的 The Scope of Instance Variables Toenforce the ability of an object to hide its data, the c ...
- JNI,RegisterNative参数解析
Register native method - 数据类型和method descriptor 使用JNI时,为了使得虚拟机可以找到在C/C++ code中定义的native方法,有两种机制可以用,一 ...
- Nginx使用(配置开机启动)
环境: 系统:CentOS 6.5 Final 安装目录:/usr/local/nginx Nginx开机自启: ①编写shell实现控制 vi /etc/init.d/nginx 添加内容: #!/ ...
- 15-BOM
BOM的介绍 JavaScript基础分为三个部分: ECMAScript:JavaScript的语法标准.包括变量.表达式.运算符.函数.if语句.for语句等. DOM:文档对象模型,操作网页上的 ...
- 屏幕抓取程序 (位图DDB的例子)
屏幕抓取程序的意思是将整个屏幕图显示在应用程序的用户区中,等价于截图.对桌面窗口的操作:首先得知道桌面窗口的宽和高,获取宽和高需要利用窗口的设备句柄,而获取设备句柄需要知道窗口句柄,这一系列的连串关系 ...