[JAVA]用MyBatis框架实现一个简单的数据查询操作
基于在前面几章我们已经学习了对MyBatis进行环境配置,并利用SqlSessionFactory核心接口生成了sqlSession对象对数据库进行交互,执行增删改查操作。这里我们就先来学习如何对数据进行查询的操作,具体查询操作有以下几个步骤
- 创建实体类
- 创建Mapper XML
- 编写<select>SQL标签
- 开启驼峰命名映射
- 新增<mapper>
- SqlSession执行select语言
首先,我们需要有可供查询信息的数据表并被导入到我们IDEA开发工具中,这里我导入了一个有关奶粉售卖信息的商品表
其中t-goods商品表内容如下
我们要做的操作是按照商品编号从大到小倒序排列,并且将结果的前十条提取出来 步骤演示:
第一步.创建实体类
创建一个com.mybatis.entity.Goods包,创建命名为Goods代表商品的类,内容如下:
public class Goods{
private Integer goodsId;//商品编号
private String title;//标题
private String subTitle;//子标题
private Float originalCost;//原始价格
private Float currentPrice;//当前价格
private Float discount;//折扣率
private Integer isFreeDelivery;//是否包邮,1-包邮 0-不包邮
private Integer categoryId;//分类编号
}
然后选中以上代码块快捷键Alt+Insert生成getter/setter方法
public Integer getGoodsId() {
return goodsId;
}
public void setGoodsId(Integer goodsId) {
this.goodsId = goodsId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getSubTitle() {
return subTitle;
}
public void setSubTitle(String subTitle) {
this.subTitle = subTitle;
}
public Float getOriginalCost() {
return originalCost;
}
public void setOriginalCost(Float originalCost) {
this.originalCost = originalCost;
}
public Float getCurrentPrice() {
return currentPrice;
}
public void setCurrentPrice(Float currentPrice) {
this.currentPrice = currentPrice;
}
public Float getDiscount() {
return discount;
}
public void setDiscount(Float discount) {
this.discount = discount;
}
public Integer getIsFreeDelivery() {
return isFreeDelivery;
}
public void setIsFreeDelivery(Integer isFreeDelivery) {
this.isFreeDelivery = isFreeDelivery;
}
public Integer getCategoryId() {
return categoryId;
}
public void setCategoryId(Integer categoryId) {
this.categoryId = categoryId;
}
}
第二步.创建Mapper XML文件
在resources目录下创建名为mappers的包,创建goods.xml文件,此文件用意是说明实体类与表之间的映射关系
第三步.编写<select>SQL标签
在goods.xml中声明 文件内容:
//xml标准声明部分
<?xml version="1.0" encoding ="UTF-8"?>
//Mybatis的DTD部分
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
//MyBatis映射部分 namespace:命名空间
<mapper namespace="goods">
<select id="selectAll" resultType="com.mybatis.entity.Goods">
select * from t_goods order by goods_id desc limit 10
//按照商品编号从大到小倒序排列,并且将结果的前十条提取出来
</select>
</mapper>
//resultType="com.mybatis.entity.Goods"指定了该查询操作执行后返回结果的类型,这里将返回的结果映射成com.mybatis.entity.Goods类型的对象
第四步.新增<mapper>
然后在mybatis-config.xml中对它声明
<mappers>
<mapper resource="mappers/goods.xml"/>
</mappers>
第五步.开启驼峰命名映射
<settings>
<!--goods_id ==> goodsId 驼峰命名转换 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
第六步.SqlSession执行select语言
打开MyBatisTestor测试用例类,执行goods类中书写的SQ语句,并且得到对应的结果
@Test
public void testSelectAll(){
SqlSession session = null;
try{
session = MyBatisUtils.openSession();
List<Goods> List = session.selectList("goods.selectALL");
//打印表结果
for(Goods g: list){
System.out.printin(g.getTitle());
}
}catch(Exception e){
throw e;
}finally{
MyBatisUtils.closeSession(session);
}
}
演示查询结果: