如何通过Mybatis框架高效查询并输出数据库表中的数据?

2026-05-16 00:221阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1817个文字,预计阅读时间需要8分钟。

如何通过Mybatis框架高效查询并输出数据库表中的数据?

一、需求说明使用MyBatis框架查询数据库user表数据并打印到控制台。

二、数据库数据准备-- 创建用户表CREATE TABLE user ( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(20) NOT NULL, birthday DATE, sex ENUM('男', '女'));

一、需求说明

使用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" "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" "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" "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 目标

如何通过Mybatis框架高效查询并输出数据库表中的数据?

完成接口映射配置文件UserMapper.xml的编写:这个映射文件就相当于UserMapper接口实现类配置

5.2 UserMapper.xml接口映射文件

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "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:用于配置互联网上的映射文件的路径,比如: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(); } }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。

本文共计1817个文字,预计阅读时间需要8分钟。

如何通过Mybatis框架高效查询并输出数据库表中的数据?

一、需求说明使用MyBatis框架查询数据库user表数据并打印到控制台。

二、数据库数据准备-- 创建用户表CREATE TABLE user ( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(20) NOT NULL, birthday DATE, sex ENUM('男', '女'));

一、需求说明

使用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" "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" "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" "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 目标

如何通过Mybatis框架高效查询并输出数据库表中的数据?

完成接口映射配置文件UserMapper.xml的编写:这个映射文件就相当于UserMapper接口实现类配置

5.2 UserMapper.xml接口映射文件

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "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:用于配置互联网上的映射文件的路径,比如: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(); } }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。