技术概述
主要负责与数据库进行交互,获取、更新相关数据,并反馈给前端,我用了SpringBoot与JPA框架进行编写,学习该技术的原因是较为容易上手以及自己对于后端比较赶兴趣,这个难点在于怎么把数据正和城自己想要的样子。
技术详述
首先要在application.properties里面配置数据库相关信息
server.port=8082
spring.datasource.url=jdbc:mysql://121.5.114.159:3306/tmall?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
spring.datasource.username =root
spring.datasource.password =Zh1314520.
spring.jmx.enabled=false
然后在pom.xml里面导入相关依赖
<dependency>
<groupId>alicloud-android-sdk-utils-no-ut-2.0.0</groupId>
<artifactId>alicloud-android-sdk-utils-no-ut</artifactId>
<version>2.0.0</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/resources/libs/push_android_6.3.3/libs/alicloud-android-sdk-utils-no-ut-2.0.0.jar</systemPath>
</dependency>
创建实体类与数据库表一一对应,然后就可以对数据库进行操作了。
package com.example.caigouapp.entity;
import lombok.Data;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Data
@Entity
public class Food {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String ingredient;
private double price;
private Integer major;
private String standard_weight;
}
再然后就是定义接口,实现接口,调用接口就可以实现对数据库的操作了。
@Query(value = "select c.custom_menuid from Cart c where c.user_id = :id")
String findCartMenus(@Param("id")Integer id);
controller
@RequestMapping(value = "/menu",method = RequestMethod.POST)
public JSONObject m1(@RequestBody String name){
JSONObject par = JSONObject.parseObject(name);
String str = par.getString("searchWord");
//获得符合条件的菜谱列表
List<Menu> m1 = menuService.findMenu(str);
JSONArray array= JSONArray.parseArray(JSON.toJSONString(m1));
JSONObject res = new JSONObject();
res.put("menus",array);
res.put("code",200);
res.put("message","success");
return res;
}
问题与解决
在进行SQL语句执行的时候,如果要用到LIMIT关键字,不能使用JPA自带格式的SQL语句写法,要使用原生SQL语句
正确的格式:
@Query(value = "select * from menu where tags = ?1 and status = 1 limit ?2,1",nativeQuery = true)
Menu getMenuRandom(String tag,Integer randomNum);
总结
SpringBoot和JPA框架值学到了一点点东西,还有很多功能没有用到,在之后的实践中或者是学习中,完善自己的知识框架,学更多的东西解决更多的问题。虽然这门课已经结束了,但学习没有结束。希望能够学到更多的东西。