如何基于mybatis框架查询数据库表数据并打印
#代码知识 发布时间: 2026-01-12
一、需求说明

使用mybatis框架查询数据库user表数据并打印到控制台上
二、数据库数据准备
-- 创建用户表 create table user ( id int primary key auto_increment, username varchar(20) not null, birthday date, sex char(1) default '男', address varchar(50) ); -- 添加用户数据 insert into user values (null, '孙悟空','1980-10-24','男','花果山水帘洞'); insert into user values (null, '白骨精','1992-11-12','女','白虎岭白骨洞'); insert into user values (null, '猪八戒','1983-05-20','男','福临山云栈洞'); insert into user values (null, '蜘蛛精','1995-03-22','女','盤丝洞'); -- 查询用户数据 select * from user;
三、实现步骤
3.1 创建模块3
.2 导入Mybatis框架jar包
3.3 编写用户实体类:User
package com.vg.entity;
import java.util.Date;
public class User {
private int id;
private String username;
private Date birthday;
private String sex;
private String address;
//alt+insert快速生成getter/setter方法
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", birthday=" + birthday +
", sex='" + sex + '\'' +
", address='" + address + '\'' +
'}';
}
}
3.4 编写dao接口:UserMapper
package com.vg.dao;
import com.vg.entity.User;
import java.util.List;
/**
* 数据访问层接口:对用户进行增删改查操作
* */
public interface UserMapper {
/**
* 查询所有用户
* */
List<User> findAllUsers();
}
3.5 编写dao接口映射文件: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>
</mapper>
3.6 编写Mybatis主配置文件:sqlMapConfig.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>
</configuration>
3.7 编写测试类
package com.vg.test;
import org.junit.Test;
/**
* 测试类
*/
public class TestUserMapper {
/**
* 测试方法:查询所有学生
*/
@Test
public void testFindAllUsers(){
}
}
四、完善sqlMapConfig.xml
4.1 目标
完成mybatis主配置文件相关信息的配置:数据库环境信息配置,包括如下:
- 导入mybatis约束(复制约束信息)
- 数据库事务配置
- 数据库连接信息配置
- 连接池信息配置
4.2 sqlMapConfig.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:设置默认的数据库环境
environment:用来配置一个数据库的环境信息
-->
<environments default="develop">
<!--用来配置一个数据库的环境信息
id:配置环境信息的唯一标识
-->
<environment id="develop">
<!--
transactionManager:配置事务管理器
type:设置事务管理器的类型,取值有type=“[JDBC|MANAGED]”
JDBC:事务管理使用JDBC的管理方式
MANAGED:事务交给容器管理(mybatis不管理),后续交给spring容器管理。
-->
<transactionManager type="JDBC"></transactionManager>
<!--
dataSource:配置数据源(连接池)信息
type:设置数据源类型,常用的值有:unpooled 和 pooled
unpooled:不使用连接池,每次都重新获取连接操作数据
pooled:使用mybatis内置的连接池
-->
<dataSource type="POOLED">
<!--数据库驱动字符串-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<!--数据库驱动字符串-->
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<!--用户名-->
<property name="username" value="root"/>
<!--密码-->
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
</configuration>
五、完善UserMapper.xml文件
5.1 目标
完成接口映射配置文件UserMapper.xml的编写:这个映射文件就相当于UserMapper接口实现类配置
5.2 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属性的作用:关联接口,需要配置对应接口的类全名字符串
-->
<mapper namespace="com.vg.dao.UserMapper">
<!-- 完成接口映射配置文件UserMapper.xml的编写:这个映射文件就相当于UserMapper接口实现类配置 -->
<!--select标签的作用:用来配置查询要执行的SQL语句
id属性:关联接口中的方法名
resultType属性:设置方法返回的数据类型,如果是集合则配置集合元素的类型
-->
<select id="findAllUsers" resultType="com.vg.entity.User">
select * from user
</select>
</mapper>
5.3 在sqlMapConfig.xml中加载接口映射配置文件
<!--mappers标签的作用:用来配置接口映射文件-->
<mappers>
<!--mapper标签:一个该标签就配置一个接口映射文件
resource属性:配置映射文件的路径,路径分隔符使用 / : com/vg/dao/UserMapper.xml
url:用于配置互联网上的映射文件的路径,比如:http://www.baidu.com/xxx.xml
-->
<mapper resource="com/vg/dao/UserMapper.xml"></mapper>
</mappers>
六、编写测试类运行
6.1 运行效果
6.2 实现步骤
- 1. 通过Resources类,加载sqlMapConfig.xml,得到文件输入流对象
- 2. 实例化会话工厂创建类SqlSessionFactoryBuilder
- 3. 通过会话工厂创建类,读取上面的输入流,得到会话工厂SqlSessionFactory类
- 4. 使用SqlSessionFactory对象,创建SqlSession对象
- a) 它相当于JDBC中的Connection对象,提供了操作数据库的CRUD方法
- b) 它提供了一个getMapper()方法,获取接口的实现对象。
- 5. 获取接口 UserMapper 实现类对象
- 6. 执行数据库的查询操作,输出用户信息
- 7. 关闭会话,释放资源。
6.3 测试类代码
package com.vg.test;
import com.vg.dao.UserMapper;
import com.vg.entity.User;
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 java.io.InputStream;
import java.util.List;
/**
* 测试类
*/
public class TestUserMapper {
/**
* 测试方法:查询所有学生
* SqlSessionFactoryBuilder=>SqlSessionFactory=>Sqlsession:相当于JDBC中的Connection对象
*/
@Test
public void testFindAllUsers() throws Exception{
//1. 通过Resources类,加载sqlMapConfig.xml,得到文件输入流对象
// Resources类作用:专门读取src目录下的资源文件
InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
//2. 实例化会话工厂创建类SqlSessionFactoryBuilder
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//3. 通过会话工厂创建类,读取上面的输入流,得到会话工厂SqlSessionFactory类
SqlSessionFactory sqlSessionFactory = builder.build(in);
//4. 使用SqlSessionFactory对象,创建SqlSession对象
//a) 它相当于JDBC中的Connection对象,提供了操作数据库的CRUD方法
//b) 它提供了一个getMapper()方法,获取接口的实现对象。
SqlSession sqlSession = sqlSessionFactory.openSession();
//5. 获取接口 UserMapper 实现类对象
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
System.out.println("userMapper = " +userMapper);
//6. 执行数据库的查询操作,输出用户信息
List<User> userList = userMapper.findAllUsers();
for (User user : userList) {
System.out.println(user);
}
//7. 关闭会话,释放资源。
sqlSession.close();
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
代码知识SEO上一篇 : Python QT组件库qtwidgets的使用
下一篇 : C语言基础使用IDE快速开发的方法
-
SEO外包最佳选择国内专业的白帽SEO机构,熟知搜索算法,各行业企业站优化策略!
SEO公司
-
可定制SEO优化套餐基于整站优化与品牌搜索展现,定制个性化营销推广方案!
SEO套餐
-
SEO入门教程多年积累SEO实战案例,从新手到专家,从入门到精通,海量的SEO学习资料!
SEO教程
-
SEO项目资源高质量SEO项目资源,稀缺性外链,优质文案代写,老域名提权,云主机相关配置折扣!
SEO资源
-
SEO快速建站快速搭建符合搜索引擎友好的企业网站,协助备案,域名选择,服务器配置等相关服务!
SEO建站
-
快速搜索引擎优化建议没有任何SEO机构,可以承诺搜索引擎排名的具体位置,如果有,那么请您多注意!专业的SEO机构,一般情况下只能确保目标关键词进入到首页或者前几页,如果您有相关问题,欢迎咨询!