MyBatis三个查询方法_selectList_selectOne_selectMap
时间:2022-07-22
本文章向大家介绍MyBatis三个查询方法_selectList_selectOne_selectMap,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、项目的目录结构:
二、回顾Mybatis的项目搭建步骤
1、导入相关的包(11个jar包)1 2、在src目录下编写编写配置文件(mybatis-cfg.xml) 3、编写实体类(User.java) 4、编写映射文件(UserMapper.xml) 5、编写测试文件 6、调用JUnit 5进行调试
相关jar包截图
mybatis-cfg.xml
<?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>
<environments default="dev">
<environment id="dev">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/java505"/>
<property name="username" value="root"/>
<property name="password" value="szxy"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="cn/bjsxt/mapper/usermapper.xml"/>
</mappers>
</configuration>
注:java505为mysql下的数据库名。驱动器driver的值不能更改。
实体类:
设置私有变量, 实现序列化, 带参无参构造函数, 取值赋值方法, 改写toString方法, hashCode()和equals()方法。
import java.io.Serializable;
public class User implements Serializable{
private int id;
private String name;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public User(int id, String name, String password) {
super();
this.id = id;
this.name = name;
this.password = password;
}
public User() {
super();
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", password=" + password + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + id;
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + ((password == null) ? 0 : password.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
User other = (User) obj;
if (id != other.id)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (password == null) {
if (other.password != null)
return false;
} else if (!password.equals(other.password))
return false;
return true;
}
}
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">
<mapper namespace="cn.bjsxt.mapper.UserMapper">
<select id="selAll" resultType="cn.bjsxt.pojo.User">
select * from t_user
</select>
<select id="selOne" resultType="cn.bjsxt.pojo.User">
select * from t_user where id=1
</select>
</mapper>
select id=“selAll”: 定义查询方法的名称 select * from t_user:SQL语句为具体操作的内容
测试类testSelect.java
package cn.bjsxt.test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
import java.util.Set;
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 cn.bjsxt.pojo.User;
public class TestSelect {
@Test
public void testSelectList() throws IOException {
InputStream is = Resources.getResourceAsStream("mybatis-cfg.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
SqlSession session = factory.openSession();
//1、selectList
/**List<User> list = session.selectList("cn.bjsxt.mapper.UserMapper.selAll");
for (User user : list) {
System.out.println(user);
}*/
//2、selectOne
/**User user = session.selectOne("cn.bjsxt.mapper.UserMapper.selOne");
System.out.println(user);*/
//3、selectMap
Map<Integer, User> map = session.selectMap("cn.bjsxt.mapper.UserMapper.selAll", "id");
System.out.println(map);
Set<Integer> set = map.keySet();
for (Integer k : set) {
System.out.println(map.get(k));
}
session.close();
}
}
注:1、使用Junit 5需要在类里面添加一段代码@Test
,并导入import org.junit.Test;
2、selectAll查询的是所有对象,selectOne查询的是一个对象并且需要设置条件,selectMap查询的是具有键值关系的对象
- 相关包链接:https://pan.baidu.com/s/1rW6M5Xo9q8pIqTc5DnK9sA 提取码:gl59
- 使用自定义标记来构建页面
- ASP.NET MVC集成EntLib实现“自动化”异常处理[实例篇]
- ASP.NET Core管道深度剖析(2):创建一个“迷你版”的管道来模拟真实管道请求处理流程
- 机器学习实战之决策树
- 初学ReactJS,写了一个RadioButtonList组件
- 今天,你有微信小游戏提交审核吗?
- 云计算,迷你版线程同步
- Kubernetes 年度关键进展回顾
- 比较一下以“反射”和“表达式”执行方法的性能差异
- 人工智能芯片是什么?有什么用?
- 柯洁食言“复出”再战AI:明年4月见分晓
- 深入探讨ASP.NET MVC的筛选器
- pytorch自然语言处理之Pooling层的句子分类
- su命令cannot set groups: Operation not permitted的解决方法
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Laravel框架下载,安装及路由操作图文详解
- PHP实用小技巧之调用录像的方法
- Laravel重定向,a链接跳转,控制器跳转示例
- Laravel 错误提示本地化的实现
- Laravel框架DB facade数据库操作详解
- laravel 解决强制跳转 https的问题
- 在laravel中实现将查询的对象转换为多维数组的函数
- 在Laravel 中实现是否关注的示例
- Laravel框架查询构造器常见用法总结
- laravel 解决多库下的DB::transaction()事务失效问题
- laravel 实现上传图片到本地和前台访问示例
- laravel框架模型中非静态方法也能静态调用的原理分析
- Laravel 5.2 文档 数据库 —— 起步介绍
- laravel csrf排除路由,禁止,关闭指定路由的例子
- thinkphp框架类库扩展操作示例