学习淘淘商城第四十课(导入商品数据到索引库-dao层)

        我们先来看看我们要导入数据的sql语句并且查看查询结果。


        针对来自三张表的数据,我们最好使用一个pojo来接收这些数据,而且这个pojo还会作为查询结果的载体,因此服务层和表现层都会用到这个pojo,我们最好把它放到taotao-common工程的pojo目录下。我们新建SearchItem类(记得要实现序列化,因为要进行网络传输)。如下图所示。


 

    private String id;
    private String title;
    private String sell_point;
    private long price;
    private String image;
    private String item_category_name;
    private String item_desc;

       下面解释下为何id字段类型为string,我们到/usr/local/solr/solrhome/collection1/conf目录下,打开schema.xml,搜索<field name="id"就可以找到如下图所示的这一行,可以看到id的类型为"string"。数据库中id字段的类型是long,为了避免long和string转换带来的问题,我们就使用string类型。


        price字段类型之所以定义为long型是为了避免使用浮点数类型(float),价格精确到分,也就是由原来的以元单位的价格乘以100倍(数据库中的价格存储的都是以分为单位的价格)。

        由于我们要导入的数据来自于三张表,用逆向工程生产成的代码已经解决不了问题了,需要我们手动来写Mapper文件。那么Mapper文件我们应该放到哪儿呢?可能有人认为应该放到taotao-manager-dao工程下,但是这其实是不太合理的,我们搜索服务只是引用taotao-manager-dao工程的一些东西,搜索服务的这个操作非常特例,别的工程都用不着,因此我们放到taotao-manager-dao工程不太合适。我们直接放到taotao-search-service工程下更合适。

        我们在taotao-search-service工程下新建一个"com.taotao.search.mapper"包,并在该包下新建SearchItemMapper接口类,在接口中添加一个接口getSearchItemList,如下图所示。


        我们把taotao-manager-dao工程下的某个mapper.xml文件拷贝一份到com.taotao.search.mapper包下,留下头部和<mapper>其余的删掉,在mapper中定义一个sql语句。id为接口的名字,resultType是我们定义的pojo类的全类名。


<?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="com.taotao.search.mapper.SearchItemMapper" >
  <select id="getSearchItemList" resultType="com.taotao.common.pojo.SearchItem">
  	SELECT
		a.id,
		a.title,
		a.sell_point,
		a.price,
		a.image,
		b. NAME item_category_name,
		c.item_desc
	FROM
		tb_item a
	LEFT JOIN tb_item_cat b ON a.cid = b.id
	LEFT JOIN tb_item_desc c ON a.id = c.item_id
	WHERE
		a.`status` = 1
  </select>
</mapper>

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值