一.Entity实体类
1.SolrData.java
package com.qfedu.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class SolrData {
private long id;
private String title;
private String sellPoint;
private long price;
private String image;
private String catName;
private String itemDesc;
}
2.TbUser.java
package com.qfedu.entity;
import java.util.Date;
import java.io.Serializable;
/**
* 用户表(TbUser)实体类
*/
public class TbUser implements Serializable {
private static final long serialVersionUID = 840331919116951365L;
private Long id;
/**
* 用户名
*/
private String username;
/**
* 密码,加密存储
*/
private String password;
/**
* 注册手机号
*/
private String phone;
/**
* 注册邮箱
*/
private String email;
private Date created;
private Date updated;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Date getCreated() {
return created;
}
public void setCreated(Date created) {
this.created = created;
}
public Date getUpdated() {
return updated;
}
public void setUpdated(Date updated) {
this.updated = updated;
}
}
二.DAO
1.SolrDataDao.java
package com.qfedu.dao;
import com.qfedu.entity.SolrData;
import java.util.List;
public interface SolrDataDao {
List<SolrData> getAllData();
}
2.TbUserDao.java
package com.qfedu.dao;
import com.qfedu.entity.TbUser;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 用户表(TbUser)表数据库访问层
*/
public interface TbUserDao {
/**
* 通过ID查询单条数据
*
* @param id 主键
* @return 实例对象
*/
TbUser queryById(Long id);
/**
* 查询指定行数据
*
* @param offset 查询起始位置
* @param limit 查询条数
* @return 对象列表
*/
List<TbUser> queryAllByLimit(@Param("offset") int offset, @Param("limit") int limit);
/**
* 通过实体作为筛选条件查询
*
* @param tbUser 实例对象
* @return 对象列表
*/
List<TbUser> queryAll(TbUser tbUser);
/**
* 新增数据
*
* @param tbUser 实例对象
* @return 影响行数
*/
int insert(TbUser tbUser);
/**
* 修改数据
*
* @param tbUser 实例对象
* @return 影响行数
*/
int update(TbUser tbUser);
/**
* 通过主键删除数据
*
* @param id 主键
* @return 影响行数
*/
int deleteById(Long id);
}
三.Mapper.xml文件
1.SolrDataDao.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="com.qfedu.dao.SolrDataDao">
<select id="getAllData" resultType="solrData">
select i.id, i.title, i.sell_point sellPoint, i.price, i.image,
c.name catName, d.item_desc itemDesc
from tb_item i,
tb_item_cat c,
tb_item_desc d
where i.cid = c.id
and i.id = d.item_id
limit 4000
</select>
</mapper>
2.TbUserDao.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="com.qfedu.dao.TbUserDao">
<resultMap type="com.qfedu.entity.TbUser" id="TbUserMap">
<result property="id" column="id" jdbcType="INTEGER"/>
<result property="username" column="username" jdbcType="VARCHAR"/>
<result property="password" column="password" jdbcType="VARCHAR"/>
<result property="phone" column="phone" jdbcType="VARCHAR"/>
<result property="email" column="email" jdbcType="VARCHAR"/>
<result property="created" column="created" jdbcType="TIMESTAMP"/>
<result property="updated" column="updated" jdbcType="TIMESTAMP"/>
</resultMap>
<!--查询单个-->
<select id="queryById" resultMap="TbUserMap">
select
id, username, password, phone, email, created, updated
from solr.tb_user
where id = #{id}
</select>
<!--查询指定行数据-->
<select id="queryAllByLimit" resultMap="TbUserMap">
select
id, username, password, phone, email, created, updated
from solr.tb_user
limit #{offset}, #{limit}
</select>
<!--通过实体作为筛选条件查询-->
<select id="queryAll" resultMap="TbUserMap">
select
id, username, password, phone, email, created, updated
from solr.tb_user
<where>
<if test="id != null">
and id = #{id}
</if>
<if test="username != null and username != ''">
and username = #{username}
</if>
<if test="password != null and password != ''">
and password = #{password}
</if>
<if test="phone != null and phone != ''">
and phone = #{phone}
</if>
<if test="email != null and email != ''">
and email = #{email}
</if>
<if test="created != null">
and created = #{created}
</if>
<if test="updated != null">
and updated = #{updated}
</if>
</where>
</select>
<!--新增所有列-->
<insert id="insert" keyProperty="id" useGeneratedKeys="true">
insert into solr.tb_user(username, password, phone, email, created, updated)
values (#{username}, #{password}, #{phone}, #{email}, #{created}, #{updated})
</insert>
<!--通过主键修改数据-->
<update id="update">
update solr.tb_user
<set>
<if test="username != null and username != ''">
username = #{username},
</if>
<if test="password != null and password != ''">
password = #{password},
</if>
<if test="phone != null and phone != ''">
phone = #{phone},
</if>
<if test="email != null and email != ''">
email = #{email},
</if>
<if test="created != null">
created = #{created},
</if>
<if test="updated != null">
updated = #{updated},
</if>
</set>
where id = #{id}
</update>
<!--通过主键删除-->
<delete id="deleteById">
delete from solr.tb_user where id = #{id}
</delete>
</mapper>
四.Service
1.SolrDataServiceImpl.java
package com.qfedu.service.impl;
import com.qfedu.dao.SolrDataDao;
import com.qfedu.entity.SolrData;
import com.qfedu.service.ISolrDataService;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.common.SolrInputField;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.List;
@Service
public class SolrDataServiceImpl implements ISolrDataService {
@Resource
private SolrDataDao solrDataDao;
@Value("${solr_server_url}")
private String baseURL;
@Override
public List<SolrData> getAllData() {
return solrDataDao.getAllData();
}
@Override
public boolean dataFromDB2Solr() {
List<SolrData> list = getAllData();
HttpSolrServer server = new HttpSolrServer(baseURL);
SolrInputDocument document = null;
try {
for (SolrData sd : list) {
document = new SolrInputDocument();
document.setField("id", sd.getId());
document.setField("item_title", sd.getTitle());
document.setField("item_sell_point", sd.getSellPoint());
document.setField("item_price", sd.getPrice());
document.setField("item_image", sd.getImage());
document.setField("item_category_name", sd.getCatName());
document.setField("item_desc", sd.getItemDesc());
server.add(document);
}
server.commit();
return true;
} catch (SolrServerException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
}
2.TbUserServiceImpl.java
package com.qfedu.service.impl;
import com.qfedu.entity.TbUser;
import com.qfedu.dao.TbUserDao;
import com.qfedu.service.TbUserService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* 用户表(TbUser)表服务实现类
*/
@Service("tbUserService")
public class TbUserServiceImpl implements TbUserService {
@Resource
private TbUserDao tbUserDao;
/**
* 通过ID查询单条数据
*
* @param id 主键
* @return 实例对象
*/
@Override
public TbUser queryById(Long id) {
return this.tbUserDao.queryById(id);
}
/**
* 查询多条数据
*
* @param offset 查询起始位置
* @param limit 查询条数
* @return 对象列表
*/
@Override
public List<TbUser> queryAllByLimit(int offset, int limit) {
return this.tbUserDao.queryAllByLimit(offset, limit);
}
/**
* 新增数据
*
* @param tbUser 实例对象
* @return 实例对象
*/
@Override
public TbUser insert(TbUser tbUser) {
this.tbUserDao.insert(tbUser);
return tbUser;
}
/**
* 修改数据
*
* @param tbUser 实例对象
* @return 实例对象
*/
@Override
public TbUser update(TbUser tbUser) {
this.tbUserDao.update(tbUser);
return this.queryById(tbUser.getId());
}
/**
* 通过主键删除数据
*
* @param id 主键
* @return 是否成功
*/
@Override
public boolean deleteById(Long id) {
return this.tbUserDao.deleteById(id) > 0;
}
}
五.Controller
1.SolrDataController.java
package com.qfedu.controller;
import com.qfedu.entity.SolrData;
import com.qfedu.service.ISolrDataService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
@RestController
public class SolrDataController {
@Resource
private ISolrDataService solrDataService;
@GetMapping("/SolrDatas")
public List<SolrData> getAllData(){
return solrDataService.getAllData();
}
@GetMapping("/dataFromDB2Solr")
public boolean dataFromDB2Solr(){
return solrDataService.dataFromDB2Solr();
}
}
2.TbUserController.java
package com.qfedu.controller;
import com.qfedu.entity.TbUser;
import com.qfedu.service.TbUserService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
* 用户表(TbUser)表控制层
*/
@RestController
@RequestMapping("tbUser")
public class TbUserController {
/**
* 服务对象
*/
@Resource
private TbUserService tbUserService;
/**
* 通过主键查询单条数据
*
* @param id 主键
* @return 单条数据
*/
@GetMapping("selectOne/{id}")
public TbUser selectOne(@PathVariable Long id) {
return this.tbUserService.queryById(id);
}
}
六.Web.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<!-- 配置Spring的监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 配置加载类路径的配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-*.xml</param-value>
</context-param>
<servlet>
<servlet-name>springDispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-*.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springDispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!--
使用springk框架写好的中文乱码过滤器来实现乱码的处理
-->
<filter>
<filter-name>encode</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>encode</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
今天是我在千锋线上学习的第57天,加油!!!