第六次作业

基于springboot+mybatis+vue的项目实战之(后端+前后端联调)

1、项目准备:数据库连接


# ???? WEB ????
server.port=8080
#??????????MyBatis??
#??Mybatis?Mapper??
mybatis.mapper-locations=classpath:mappers/*xml
#??Mybatis?????
mybatis.type-aliases-package=com.example.mybatis.entity

#?????
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis
spring.datasource.username=root
spring.datasource.password=1234
#??mybatis?????
mybatis.configuration.logimpl=org.apache.ibatis.logging.stdout.StdOutImpl
#????????
#??????????
mybatis.configuration.map-underscore-to-camel-case=true

2、建立项目结构文件夹

3、编写pojo文件

package edu.wust.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class Peot {
        private Integer id;
        private String author;
        private String gender;
        private String dynasty;
        private String title;
        private String style;

}

 

package edu.wust.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result {
    private Integer code;//响应码,1 代表成功; 0 代表失败
    private String msg;  //响应信息 描述字符串
    private Object data; //返回的数据
    //增删改 成功响应
    public static Result success(){
        return new Result(1,"success",null);
    }
    //查询 成功响应
    public static Result success(Object data){
        return new Result(1,"success",data);
    }
    //失败响应
    public static Result error(String msg){
        return new Result(0,msg,null);
    }
}

 4、编写mapper文件

 

package edu.wust.mapper;
import edu.wust.pojo.Peot;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface PeotMapper {

    @Select("select * from mybatis.peot")
    public List<Peot> findAll();
}

5、编写service文件

package edu.wust.service.impl;

import edu.wust.mapper.PeotMapper;
import edu.wust.pojo.Peot;
import edu.wust.service.PeotService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class PeotServiceImpl implements PeotService {
    @Autowired
    private PeotMapper peotMapper;
    @Override
    public List<Peot> findAll(){
        return peotMapper.findAll();
    }
}
package edu.wust.service;

import edu.wust.pojo.Peot;

import java.util.List;

public interface PeotService {
    public List<Peot> findAll();
}

6、编写controller文件

package edu.wust.controller;

import edu.wust.pojo.Peot;
import edu.wust.pojo.Result;
import edu.wust.service.PeotService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class PeotController {

    @Autowired
    private PeotService peotService;

    @RequestMapping("/poetfindAllJson")
    public Result findAllJson(){
        return Result.success(peotService.findAll());

    }

    @RequestMapping("/peotfindAll")
    public List<Peot> findAll(){
        return peotService.findAll();

    }

}

 7、测试后端程序是否正确

 

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>诗人信息</title>
</head>
 
<script src="./js/vue.js"></script>
<script src="./js/axios-0.18.0.js"></script>
 
<body>
 
<h1 align="center">诗人信息列表展示</h1>
 
<div id="app" align="center">
  <table border="1" cellspacing="0" width="60%">
    <tr>
      <th>序号</th>
      <th>姓名</th>
      <th>性别</th>
      <th>朝代</th>
      <th>头衔</th>
      <th>风格</th>
      <th>操作</th>
    </tr>
    <tr align="center" v-for="(peot,index) in tableData">
      <td>{{peot.id}}</td>
      <td>{{peot.author}}</td>
      <td>{{peot.gender}}</td>
      <td>{{peot.dynasty}}</td>
      <td>{{peot.title}}</td>
      <td>{{peot.style}}</td>
      <td class="text-center">
        <!--a :href="'peot_edit.html?id='+peot.id"-->
        <!--button type="button" @click="deleteId(peot.id)-->
        修改
        删除
      </td>
    </tr>
  </table>
</div>
</body>
<script>
  new Vue({
    el: "#app",
    data() {
      return {
        tableData: []
      }
    },
    mounted(){
      //https://mock.apifox.com/m1/3761592-3393136-default/peotfindAll?apifoxApiId=171587808
 //peotfindAllJson  返回类型为Result
/*      axios.get('peotfindAllJson').then(res=>{
        if(res.data.code){
          this.tableData = res.data.data;
        }*/
      //peotfindAll   返回类型为List类型
           axios.get('peotfindAll').then(res=>{
                this.tableData = res.data;
      });
    },
  });
</script>
</html>

 

 基于springboot+mybatis+vue的项目实战之前端

0、项目准备

新建项目,并删除自带demo程序,修改application.properties.

# åºç¨æå¡ WEB 访é®ç«¯å£
server.port=8080
#ä¸é¢è¿äºå容æ¯ä¸ºäºè®©MyBatisæ å°
#æå®MybatisçMapperæ件
mybatis.mapper-locations=classpath:mappers/*xml
#æå®Mybatisçå®ä½ç®å½
mybatis.type-aliases-package=eud.wust.mybatis.entity



#数据库连接
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis
spring.datasource.username=root
spring.datasource.password=1234
#开启mybatis的日志输出
mybatis.configuration.logimpl=org.apache.ibatis.logging.stdout.StdOutImpl
#开启数据库表字段
#实体类属性的驼峰映射
mybatis.configuration.map-underscore-to-camel-case=true

一、使用Apifox准备好json数据的mock地址 

 json数据如下

{"code":1,"msg":"success","data":[{"id":1,"author":"Tom","gender":"男","dynasty":"现代","title":"诗人","style":"用词活泼可爱"},{"id":2,"author":"王维","gender":"1","dynasty":"唐代","title":"诗佛","style":"空灵、寂静"},{"id":3,"author":"李商隐","gender":"2","dynasty":"唐代","title":"诗坛鬼才","style":"无"},{"id":4,"author":"李白","gender":"1","dynasty":"唐代","title":"诗仙","style":"豪放飘逸的诗风和丰富的想象力"},{"id":5,"author":"李清照","gender":"2","dynasty":"宋代","title":"女词人","style":"婉约风格"},{"id":6,"author":"杜甫","gender":"1","dynasty":"唐代","title":"诗圣","style":"反映社会现实和人民疾苦"},{"id":7,"author":"苏轼","gender":"1","dynasty":"北宋","title":"文学家、书画家,诗神","style":"清新豪健的诗风和独特的艺术表现力"}]}

 二、编写基于vue的静态页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>诗人信息</title>
</head>

<script src="./js/vue.js"></script>
<script src="./js/axios-0.18.0.js"></script>

<body>

<h1 align="center">诗人信息列表展示</h1>

<div id="app" align="center">
    <table border="1" cellspacing="0" width="60%">
        <tr>
            <th>序号</th>
            <th>姓名</th>
            <th>性别</th>
            <th>朝代</th>
            <th>头衔</th>
            <th>风格</th>
            <th>操作</th>
        </tr>
        <tr align="center" v-for="(peot,index) in tableData">
            <td>{{peot.id}}</td>
            <td>{{peot.author}}</td>
            <td>{{peot.gender}}</td>
            <td>{{peot.dynasty}}</td>
            <td>{{peot.title}}</td>
            <td>{{peot.style}}</td>
            <td class="text-center">
                <!--a :href="'peot_edit.html?id='+peot.id"-->
                <!--button type="button" @click="deleteId(peot.id)-->
                修改
                删除
            </td>
        </tr>
    </table>
</div>
</body>
<script>
    new Vue({
        el: "#app",
        data() {
            return {
                tableData: []
            }
        },
        mounted(){
            //peotfindAll
            axios.get('https://mock.apipark.cn/m1/4651915-4302626-default/peotfindAll?apifoxApiId=184371945').then(res=>{
                if(res.data.code){
                    this.tableData = res.data.data;
                }
            });
        },
    });
</script>
</html>

3.地址栏访问  http://localhost:8080/peot_list_nofenye.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值