MyBatis数据查询
MyBatis 数据查询步骤:
创建实体类,开启驼峰命名映射
创建 Mapper.xml,编写 <select> SQL 标签
mybatis-config.xml 中新增 <mapper>
SqlSession 执行 select 语句
创建 实体类,开启驼峰命名映射
在MyBatis\src\main\java\indi\chester\mybatis\entity 目录下创建 Goods.java文件
Goods 类里面的成员属性于 t_goods 里面的字段名相同,只是将下划线命名改为了驼峰命名,为此需要在 mybatis-config.xml 中开启驼峰命名映射(接下来会讲到)
package indi.chester.mybatis.entity;
public class Goods {
private Integer goodsId;
private String title;
private String subTitle;
private Float originalCost;
private Float currentPrice;
private Float discount;
private Integer isFreeDelivery;
private Integer categoryId;
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 osFreeDelivery) {
this.isFreeDelivery = osFreeDelivery;
}
public Integer getCategoryId() {
return categoryId;
}
public void setCategoryId(Integer categoryId) {
this.categoryId = categoryId;
}
}
在 MyBatis/src/main/resources/mybatis-config.xml 的 configuration标签下添加这个标签:
<!-- 驼峰命名自动转换, 数据库字段与Java 成员变量之间, 下划线与驼峰分隔-->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
创建 Mapper.xml,编写 <select> SQL 标签
在 MyBatis\src\main\resources\mappers 目录下创建 goods.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="goods">
<!-- 如果不用LIMIT, 对于查询结果的数量比较大, 返回的是一个list的, 一般不用二级缓存, 因为这样命中率不高-->
<select id="selectAll" resultType="indi.chester.mybatis.entity.Goods" useCache="false">
select * from t_goods ORDER BY goods_id DESC LIMIT 10
</select>
</mapper>
xm
resultType 里面的 Goods 类 表示会将返回的每一条数据 包装成 Goods 类型的格式。mapper 的作用就是将 SQL 数据与 Java 对象关联起来。为此我们还需要在mybatis-config.xml 中新增 <mapper>。这里用到了一个 useCache=false, 代表不使用缓存,会在后面章节详细说明。
mybatis-config.xml 中新增 <mapper>
在 configuration 标签下添加 mappers -> mapper 标签, 这样 mybatis 才认得 SQL数据和 Java 对象之间的转换关系
<mappers>
<mapper resource="mappers/goods.xml" />
</mappers>
SqlSession 执行 select 语句
在 D:\intro_Java\MyBatis\src\test\java\MyBatisTest.java 中添加 testAll() 方法用于测试一下刚刚写的 slect 语句。特别的是这里用到了 上一节 写到的 MyBatisUtils 工具类 帮助我们打开和关闭 sqlSession。d通过调用sql.Session.selectList("goods.selectAll")进行查询,goods.selectAll就是我们在mappers.xml 下 username=goods 命名空间下 selectAll 标签下写的 select 语句, 最后返回值是一个 List<Goods> 类型。
@Test
public void testSelectAll() throws Exception{
SqlSession sqlSession=null;
try {
sqlSession=MyBatisUtils.openSession();
List<Goods> GoodsList =sqlSession.selectList("goods.selectAll");
for(Goods g: GoodsList){
System.out.println(g.getTitle());
}
}catch (Exception e){
e.printStackTrace();
throw e;
}finally {
MyBatisUtils.closeSession(sqlSession);
}
}
运行结果如下:
美赞臣蓝臻Enfinitas 2段婴儿奶粉900g单罐(6-12月龄) 荷兰进口
美赞臣蓝臻Enfinitas 1段婴儿奶粉900g单罐(0-12月龄) 荷兰进口
美赞臣蓝臻Enfinitas 1段婴儿奶粉400g单罐(0-12月龄) 荷兰进口
美赞臣蓝臻Enfinitas 3段婴儿奶粉900g单罐(12-36月龄) 荷兰进口
飞利浦新安怡羊毛脂乳头保护霜/膏 孕妇羊脂护理霜 乳头皲裂滋润保湿 SCF504/88
飞利浦新安怡英国进口原生单边电动吸奶器吸乳器吸力大SCF332/01
飞利浦AVENT/新安怡VIA储奶杯母乳储存杯组240毫升*5只 SCF639/05
飞利浦新安怡 防溢乳垫 一次性干爽 舒适透气抛弃型SCF254/11
飞利浦新安怡 婴儿温奶器 宝宝暖奶器热奶器 SCF355/01
飞利浦新安怡 经典宽口PES手动吸奶器花瓣按摩垫吸乳器SCF300/88
Last updated
Was this helpful?