简介:
此项目是一个前后端分离的小demo,
开发工具:idea+微信小程序开发工具
前端:界面布局样式和js的跳转
后端:依靠SpringBoot的业务逻辑层
项目的码云地址:
微信开发工具的使用和代码的结构及其含义参考
后端业务逻辑的完成
1.数据库的创建
工具:Navicat
2. dao层及其方法的实现
1>bookinfo的实例化,利用@Entity完成映射
@Entity
@Table(name = "bookinfo")
public class BookinfoEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int bookId;
@Column
private String bookType;
@Column
private String bookName;
@Column
private int bookNum;
@Column
private int bookState;
public int getBookId() {
return bookId;
}
public void setBookId(int bookId) {
this.bookId = bookId;
}
public String getBookType() {
return bookType;
}
public void setBookType(String bookType) {
this.bookType = bookType;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public int getBookNum() {
return bookNum;
}
public void setBookNum(int bookNum) {
this.bookNum = bookNum;
}
public int getBookState() {
return bookState;
}
public void setBookState(int bookState) {
this.bookState = bookState;
}
}
bookinfoentity
2>bookstate的实例化
@Entity
@Table(name = "bookstate")
public class BookstateEntity {
@Id
private int bookState;
@Column
private String bookStateinfo;
public int getBookState() {
return bookState;
}
public void setBookState(int bookState) {
this.bookState = bookState;
}
public String getBookStateinfo() {
return bookStateinfo;
}
public void setBookStateinfo(String bookStateinfo) {
this.bookStateinfo = bookStateinfo;
}
}
bookstateEntity
3>利用repository实现对对象的持久化操作,是OO的真正实现
@Repository
public interface BookInfoRepository extends JpaRepository {
}
@Repository
public interface BookstateRepository extends JpaRepository {
}
3.service层的实现、
3.1 BookinfoService接口
package com.example.demo.service;
import com.example.demo.vo.BookinfoVo;
import java.util.List;
/**
* Author: wuhen
* Date: 2018/10/9
* Time: 20:40
*/
public interface BookinfoService {
//查询书籍
BookinfoVo findbookOne(Integer bookId);
//查询所有书籍
List findbookAll();
}
BookinfoService
3.2 接口的实现
package com.example.demo.service.impl;
import com.example.demo.entity.BookinfoEntity;
import com.example.demo.entity.BookstateEntity;
import com.example.demo.repository.BookinfoRepository;
import com.example.demo.repository.BookstateRepository;
import com.example.demo.service.BookinfoService;
import com.example.demo.util.BookConverter;
import com.example.demo.vo.BookinfoVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* Author: wuhen
* Date: 2018/10/9
* Time: 20:48
*/
@Service
public class BookinfoServiceImpl implements BookinfoService {
@Autowired
private BookinfoRepository bookinfoRepository;
@Autowired
private BookstateRepository bookstateRepository;
BookConverter bookConverter=new BookConverter();
@Override
public BookinfoVo findbookOne(Integer bookId) {
BookinfoEntity bookinfoEntity= bookinfoRepository.findById(bookId).get();
BookstateEntity bookstateEntity = bookstateRepository.findById(bookinfoEntity.getBookState()).get();
BookinfoVo bookinfoVo;
bookinfoVo = bookConverter.convert(bookinfoEntity, BookinfoVo.class);
bookinfoVo.setBookStateinfo(bookstateEntity.getBookStateinfo());
return bookinfoVo;
}
@Override
public List findbookAll() {
List bookinfoEntitys=bookinfoRepository.findAll();
List bookinfoVos=new ArrayList<>();
for (BookinfoEntity bookinfoEntity:bookinfoEntitys)
{
BookinfoVo bookinfoVo;
BookstateEntity bookstateEntity= bookstateRepository.findById(bookinfoEntity.getBookState()).get();
bookinfoVo=bookConverter.convert(bookinfoEntity,BookinfoVo.class);
bookinfoVo.setBookStateinfo(bookstateEntity.getBookStateinfo());
bookinfoVos.add(bookinfoVo);
}
return bookinfoVos;
}
}
BookinfoServiceImpl
4. controller层的实现
package com.example.demo.controller;
import com.example.demo.service.BookinfoService;
import com.example.demo.util.ResultVOUtil;
import com.example.demo.vo.BookinfoVo;
import com.example.demo.vo.ResultVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* Author: wuhen
* Date: 2018/10/9
* Time: 20:55
*/
@RestController
@RequestMapping("/book")
public class BookinfoController {
@Autowired
private BookinfoService bookinfoService;
//查询单个
@GetMapping("/findOne")
public ResultVO findbookOne(@RequestParam(value = "bookId") Integer bookId){
BookinfoVo bookinfoVo= bookinfoService.findbookOne(bookId);
return ResultVOUtil.success(bookinfoVo);
}
//查询所有
@GetMapping("/findAll") public ResultVO findbookAll(){
List bookinfoVo= bookinfoService.findbookAll();
return ResultVOUtil.success(bookinfoVo);
}
}
BookinfoController
5. 请求返回json数据
{
"code": 0,
"msg": "成功",
"data": [
{
"bookId": 1,
"bookType": "数学",
"bookName": "大数宣讲",
"bookNum": 20,
"bookStateinfo": "在架"
},
{
"bookId": 2,
"bookType": "语文",
"bookName": "国语",
"bookNum": 30,
"bookStateinfo": "在架"
},
{
"bookId": 3,
"bookType": "英语",
"bookName": "四六级",
"bookNum": 45,
"bookStateinfo": "在架"
},
{
"bookId": 4,
"bookType": "科技",
"bookName": "天眼",
"bookNum": 12,
"bookStateinfo": "在架"
}
]
}
{
"code": 0,
"msg": "成功",
"data": {
"bookId": 2,
"bookType": "语文",
"bookName": "国语",
"bookNum": 30,
"bookStateinfo": "在架"
}
}
前端业务逻辑的完成
1.效果
2.结构布局
具体代码参考源代码
微信小程序的ajax数据请求wx.request
微信小程序的ajax数据请求,很多同学找不到api在哪个位置,这里单独把小程序的ajax请求给列出来,微信小程序的请求就是wx.request这个api,wx.request(一些对象参数),微信小程 ...
WordPress版微信小程序3.1.5版的新功能
产品的完善是无止境,每过段时间就会发现产品的新问题,使用的人越多,提的需求也会越多,我听得最多的一句话就是:如果加上某某功能就完美了.其实,完美是不存在的,每个人的视角不一样,完美的定义也是不一样的. ...
微信小程序wx.showActionSheet调用客服信息功能
微信小程序wx.showActionSheet调用客服消息功能 官方文档的代码: wx.showActionSheet({ itemList: ['A', 'B', 'C'], success (re ...
微信小程序简单入门1
参考文档:https://mp.weixin.qq.com/debug/wxadoc/dev/index.html 1 创建项目 开发者工具安装完成后,打开并使用微信扫码登录.选择创建"项 ...
微信小程序简单入门理解
简单的小程序示例结构: (一):理解小程序结构app.js,app.json,app.wxss ①app.js,app.json是小程序结构必要的部分,app.wxss可选择 ②app.js用于创建小 ...
如何在原生微信小程序中实现数据双向绑定
官网:https://qiu8310.github.io/minapp/ 作者:Mora 在原生小程序开发中,数据流是单向的,无法双向绑定,但是要实现双向绑定的功能还是蛮简单的! 下文要讲的是小程序框 ...
微信小程序简单介绍 一
一 组件及api网址: 组件 :https://developers.weixin.qq.com/miniprogram/dev/component/view.html api:https://dev ...
微信小程序之用户数据解密(七)
[未经作者本人同意,请勿以任何形式转载] 经常看到有点的小伙伴在群里问小程序用户数据解密流程,所以打算写一篇关于小程序用户敏感数据解密教程: 加密过程微信服务器完成,解密过程在小程序和自身服务器完成, ...
什么是微信小程序?简单介绍
1.微信小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具有色的使用体验. 2.手机端App的另外一种新的展现形式 3.无需下载过多占用手机内存的app,小程序直接打开 ...
随机推荐
基于D3JS绘制中国地图
仿照D3JS官网上的美国地图制作了一个中国版的地图. D3JS官网上的版本: http://bl.ocks.org/NPashaP/a74faf20b492ad377312 中国版的地图效果: 如要制 ...
jQuery编程基础精华01(jQuery简介,顶级对象$,jQuery对象、Dom对象,链式编程,选择器)
jQuery简介 什么是jQuery? jQuery就是一个JavaScript函数库,没什么特别的.(开源)联想SQLHelper类 jQuery能做什么?jQuery是做什么的? jQuery本身 ...
怎样加入� android private libraries 中的包的源码
先上图: 这里以加入� afinal_0.5.1_bin.jar 为例. 第一步:加入�jar包到libs里面,系统自己主动把jar载入到android private libraries中: 第二步 ...
Android 安全概述
1. 保密: 信息.文档加密.解密 2. 鉴别.认证:就像确认与我们打电话的确实是XXX,而不是骗子 3. 完整性:信息不能被篡改, 4. 不可否认性:确定信息有who产生,并且将来不能否认
python getpass模块:隐藏不显示输入的密码
不知道为什么,本机测试必须要在debug模式下才正常运行.. import getpass #用于隐藏用户输入的字符串,常用来接收密码 def checkuser(user,passwd): ': r ...
Dubbo.xml配置源-Dubbo.xsd分析
我们使用Dubbo时,一般都会使用xml配置基本信息,如项目名称(application).注册中心(register).协议(protocal).服务(service),如下所示: 1 2 3 ...
my eclipse 端口号被占用问题 Mac上
首先在终端输入 lsof -i :8080 (8080是端口号) 找到进程之后 在终端杀死进程 kill -9 7934 重新运行
图->;最短路径->;单源最短路径(迪杰斯特拉算法Dijkstra)
文字描述 引言:如下图一个交通系统,从A城到B城,有些旅客可能关心途中中转次数最少的路线,有些旅客更关心的是节省交通费用,而对于司机,里程和速度则是更感兴趣的信息.上面这些问题,都可以转化为求图中,两 ...
kafka consumer重复消费问题
在做分布式编译的时候,每一个worker都有一个consumer,适用的kafka+zookeep的配置都是默认的配置,在消息比较少的情况下,每一个consumer都能均匀得到互不相同的消息,但是当消 ...