[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 mapperPUBLIC "-//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);}}
演示查询结果: