java框架完成表的查询操作_如何基于mybatis框架查询数据库表数据并打印

一、需求说明

使用mybatis框架查询数据库user表数据并打印到控制台上

7b89ba424473b065d43059150cee487c.png

二、数据库数据准备

-- 创建用户表

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包

8a3edee88a65f89cd1c0eb853df36f98.png

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 findAllUsers();

}

3.5 编写dao接口映射文件:UserMapper.xml

/p>

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

3.6 编写Mybatis主配置文件:sqlMapConfig.xml

/p>

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

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主配置文件

/p>

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

五、完善UserMapper.xml文件

5.1 目标

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

5.2 UserMapper.xml接口映射文件

/p>

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

select * from user

5.3 在sqlMapConfig.xml中加载接口映射配置文件

六、编写测试类运行

6.1 运行效果

dc38d772dae2c044eb827bd9814f5abc.png

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 userList = userMapper.findAllUsers();

for (User user : userList) {

System.out.println(user);

}

//7. 关闭会话,释放资源。

sqlSession.close();

}

}

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java数据查询结果的输出 摘自:北京海脉信息咨询有限公司   利用Java开发数据库应用时,经常需要在用户界面上显示查询结果。我们可以利用Vector、JTable、AbstractTableModel等三个类较好地解决这一问题。 类Vector:   定义如下: public class Vector extends AbstractList implements List , Cloneable , Serializable{…} 类JTable:   JTable组件是Swing组件中比较复杂的小件,隶属于javax.swing包,它能以二维的形式显示数据。类Jtable: 定义如下: public class JTable extends JComponent implements TableModelListener, Scrollable, TableColumnModelListener, ListSelectionListener, CellEditorListener, Accessible{…} 类AbstractTableModel:   定义如下: public abstract class AbstractTableModel extends Object implements TableModel, Serializable{…}   生成一个具体的TableModel作为AbstractTableMode的子类,至少必须实现下面三个方法: public int getRowCount(); public int getColumnCount(); public Object getValueAt(int row, int column);   我们可以建立一个简单二维(5×5): TableModel dataModel = new AbstractTableModel() { public int getColumnCount() { return 5; } public int getRowCount() { return 5;} public Object getValueAt(int row, int col) { return new Integer(row*col); } }; JTable table = new JTable(dataModel); JScrollPane scrollpane = new JScrollPane(table); 数据库及其连接方法:   我们采用Sybase数据库,数据库存放在数据库服务器中。路径为:D:WORKER,数据库名为:worker.dbf。具有以下字段: 字段名 类型 Wno(职工号) VARCHAR Wname(职工名) VARCHAR Sex(性别) VARCHAR Birthday(出生日期) DATE Wage(工资) FLOAT   要连接此数据库,需使用java.sql包中的类DriverManager。此类是用于管理JDBC驱动程序的实用程序类。它提供了通过驱动程序取得连接、注册,撤消驱动程序,设置登记和数据库访问登录超时等方法。   具体连接方法如下:   定位、装入和链接SybDriver类。 driver="com.sybase.jdbc.SybDriver"; SybDriver sybdriver=(SybDriver) Class.forName(driver).newInstance();   注册SybDriver类。 DriverManager.registerDriver(sybdriver);   取得连接(SybConnection)对象引用。 user="sa"; password=""; url="jdbc:sybase:Tds:202.117.203.114:5000/WORKER"; SybConnection connection= (SybConnection)DriverManager.getConnection (url,user,password); 建立完连接后,即可通过Statement接口进行数据库的查询与更改。 实现方法:   对象声明。   AbstractTableModel tm;   //声明一个类AbstractTableModel对象   JTable jg_table;//声明一个类JTable对象   Vector vect;//声明一个向量对象   JScrollPane jsp;//声明一个滚动杠对象   String title[]={"职工号","职工名",   "性别","出生日期","工资"};   //二维列名   定制格。   实现抽象类AbstractTableModel对象tm中的方法:   vect=new Vector();//实例化向量   tm=new AbstractTableModel(){   public int getColumnCount(){   return title.length;}//取得格列数   public int getRowCount(){   return vect.size();}//取得格行数   public Object getValueAt(int row,int column){   if(!vect.isEmpty())   return   ((Vector)vect.elementAt(row)).elementAt(column);   else   return null;}//取得单元格中的属性值   public String getColumnName(int column){   return title[column];}//设置格列名   public void setValueAt   (Object value,int row,int column){}   //数据模型不可编辑,该方法设置为空   public Class getColumnClass(int c){   return getValueAt(0,c).getClass();   }//取得列所属对象类   public boolean isCellEditable(int row,int column){   return false;}//设置单元格不可编辑,为缺省实现   };   定制格:   jg_table=new JTable(tm);//生成自己的数据模型   jg_table.setToolTipText("显示全部查询结果");   //设置帮助提示   jg_table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);   //设置格调整尺寸模式   jg_table.setCellSelectionEnabled(false);   //设置单元格选择方式   jg_table.setShowVerticalLines(true);//   设置是否显示单元格间的分割线   jg_table.setShowHorizontalLines(true);   jsp=new JScrollPane(jg_table);//给格加上滚动杠   显示查询结果。   连接数据库:已给出。   数据查询:   Statement stmt=connection.createStatement();   ResultSet rs=stmt.executeQuery   ("select * from worker");   显示查询结果:   vect.removeAllElements();//初始化向量对象   tm.fireTableStructureChanged();//更新格内容   while(rs.next()){   Vector rec_vector=new Vector();   //从结果集中取数据放入向量rec_vector中   rec_vector.addElement(rs.getString(1));   rec_vector.addElement(rs.getString(2)); rec_vector.addElement(rs.getString(3)); rec_vector.addElement(rs.getDate(4));   rec_vector.addElement(new Float(rs.getFloat(5)));   vect.addElement(rec_vector);   //向量rec_vector加入向量vect中   }   tm.fireTableStructureChanged();   //更新格,显示向量vect的内容   实现示图中记录前翻、后翻的效果,有两种方法:   如果软件环境支持JDBC2.0,可直接利用rs.prevoius()和rs.next()获得记录,然后通过类JTextField中的setText()方法,显示出各个字段值。   如果不支持JDBC2.0,则可利用向量Vector按行取出JTable中数据。自定义一个指针,用来记录位置。当指针加1时,取出上一行数据放入Vector中显示;指针减1时,取出下一行数据显示。显示方法同上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值