关于品优购大型电商开发问题解答以及开发知识点详解day1(3)
1.数据库的创建以及逆向工程
具体按照文档操作
两点问题
1.如果mysql版本为mysql8的同学需要导入在dao层换mysql8的jar包
并去除mysql5的jar包
2.将pinyougou—parent的pom文件规定的版本改为mysql8版本
(防止以后项目报错),如果不改连接不上数据库。
3.!!!逆向工程只可运行一遍,
如果运行多遍会 .java文件不会受影响,而*Mapper.xml里的文件会写两遍
后面dao层映射过来就会一个映射两个方法会报错。
4.由于要通过注册中心要在网络上传输,所以每一个实体类(pojo)必须实现Serializable接口
后端代码(品牌管理的后端代码)
在pinyougou-sellergoods-interface 工程创建BrandService接口(略)
在pinyougou-sellergoods-service 工程创建BrandServiceImpl类
代码如下重在理解(仅作参考请勿cv)
package com.pinyougou.sellergoods.service.impl;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import com.alibaba.dubbo.config.annotation.Service;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.pinyougou.mapper.TbBrandMapper;
import com.pinyougou.pojo.TbBrand;
import com.pinyougou.pojo.TbBrandExample;
import com.pinyougou.pojo.TbBrandExample.Criteria;
import com.pinyougou.sellergoods.service.BrandService;
import entity.PageResult;
@Service
public class BrandServiceImpl implements BrandService{
@Autowired
private TbBrandMapper brandMapper;
@Override
//1
public List<TbBrand> findAll() {
// TODO Auto-generated method stub
return brandMapper.selectByExample(null);
}
@Override
//2
public PageResult findPage(int pageNum, int pageSize) {
PageHelper.startPage(pageNum, pageSize);
Page<TbBrand> page=(Page<TbBrand>) brandMapper.selectByExample(null);
return new PageResult(page.getTotal(), page.getResult());
}
@Override//无重复校验,后期待s改正
//3
public void add(TbBrand tbBrand) {
brandMapper.insert(tbBrand);
}
@Override
//4
public TbBrand findOne(long id) {
return brandMapper.selectByPrimaryKey(id);
}
@Override
//5
public void update(TbBrand tbBrand) {
brandMapper.updateByPrimaryKey(tbBrand);
}
@Override
//6
public void delete(long[] ids) {
for(long id:ids){
brandMapper.deleteByPrimaryKey(id);
}
}
@Override
//7
public PageResult findPage(int pageNum, int pageSize, TbBrand tbBrand) {
PageHelper.startPage(pageNum, pageSize);
TbBrandExample example=new TbBrandExample();
Criteria criteria=example.createCriteria();
if (tbBrand!=null) {
if (tbBrand.getFirstChar()!=null&&tbBrand.getFirstChar().length()>0) {
criteria.andFirstCharLike("%"+tbBrand.getFirstChar()+"%");
}
if (tbBrand.getName()!=null&&tbBrand.getName().length()>0) {
criteria.andNameLike("%"+tbBrand.getName()+"%");
}
}
Page<TbBrand> page=(Page<TbBrand>) brandMapper.selectByExample(example);
return new PageResult(page.getTotal(), page.getResult());
}
@Override
//8
public List<Map> selectOptionList() {
return brandMapper.selectOptionList();
}
}
1.brandMapper.selectByExample(null);按条件查找,条件为null
2.PageHelper.startPage(pageNum, pageSize);分页插件传进来一个页面大小,第几页
Page page=(Page) brandMapper.selectByExample(null);
return new PageResult(page.getTotal(), page.getResult());获取总记录数,获取结果
在pinyougou-manager-web下的BrandController类
代码如下重在理解(仅作参考请勿cv)
package com.pinyougou.mangage.controller;
import java.util.List;
import java.util.Map;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.dubbo.config.annotation.Reference;
import com.pinyougou.pojo.TbBrand;
import com.pinyougou.sellergoods.service.BrandService;
import entity.PageResult;
import entity.Result;
@RestController//相当于@controller+@responseBody
@RequestMapping("/brand")
public class BrandController {
``
@Reference
private BrandService brandService;
@RequestMapping("/findAll")
public List<TbBrand> findAll(){
return brandService.findAll();
}
@RequestMapping("/findPage")
public PageResult findPage(int pageNum,int pageSize){
return brandService.findPage(pageNum, pageSize);
}
@RequestMapping("/add")
public Result add(@RequestBody TbBrand tbBrand){
try{
System.out.println(tbBrand);
brandService.add(tbBrand);
return new Result(true, "保存成功");
}catch (Exception e) {
e.printStackTrace();
return new Result(false, "保存失败");
}
}
//根据id查询
@RequestMapping("/findOne")
public TbBrand findOne(long id) {
return brandService.findOne(id);
}
//修改数据
@RequestMapping("/update")
public Result update(@RequestBody TbBrand tbBrand){
try{
brandService.update(tbBrand);
return new Result(true, "修改成功");
}catch (Exception e) {
e.printStackTrace();
return new Result(false, "修改失败");
}
}
//删除品牌
@RequestMapping("/delete")
public Result delete(long[] ids){
try{
brandService.delete(ids);
return new Result(true, "删除成功");
}catch (Exception e) {
e.printStackTrace();
return new Result(false, "删除失败");
}
}
@RequestMapping("/search")
public PageResult search(@RequestBody TbBrand tbBrand,int pageNum,int pageSize){
return brandService.findPage(pageNum, pageSize, tbBrand);
}
@RequestMapping("/selectOptionList")
public List<Map> selectOptionList(){
return brandService.selectOptionList();
}
}
原理:
由页面调用controller,再由controller调用远端的service,由service调用dao层。
controller处理前端发来的东西
service主要处理逻辑
dao层负责数据库交互