原文链接

代码地址

前端地址:https://github.com/Snowstorm0...

后端地址:https://github.com/Snowstorm0...

1 数据库

创立MySQL数据库。

表名为user_data,人员信息有number、name。

成果如下:

2 前端

2.1 创立我的项目

关上cmd,输出ui命令:

vue ui

若没有反馈,可能是版本太低,须要卸载后重装:

npm uninstall vue-cli -g   #卸载npm install @vue/cli -g    #装置

执行ui命令胜利后,会呈现提醒:

Starting GUI...
Ready on http://localhost:8000

并会主动关上页面:

创立名为SpringAndVue-vue的我的项目,预设抉择“手动”;性能开启 Babel、Router、Vuex、Linter/Formatter;配置抉择“ESLint with error prevention only”;版本倡议应用 “vue2.0”。创立新我的项目。

通过cd进入目录,启动我的项目:

npm run serve

2.2 装置插件

装置 element-ui 插件。

关上cmd,输出ui命令:

vue ui

在插件项搜寻,并点击装置。

vue2.0 抉择装置 “vue-cli-plugin-element”;vue3.0 抉择装置 “vue-cli-plugin-element-plus”。

Terminal装置axios,每个新我的项目都须要装置:

# vue-cli2.0命令npm install axios# vue-cli3.0命令npm add axios

2.3 增加模块

2.3.1 主页

在views文件夹下创立文件 HomePage.vue,内容如下:

<template>    <div>    用户列表        <el-table                :data="tableData"                border                style="width: 40%">            <el-table-column                    prop="number"                    label="编号"                    width="150">            </el-table-column>            <el-table-column                    prop="name"                    label="姓名"                    width="150">            </el-table-column>            <el-table-column                    fixed="right"                    label="操作"                    width="160">                <template slot-scope="scope">                    <el-button @click="handleClick(scope.row)" type="text" size="small">批改</el-button>                    <el-button @click="deleteClick(scope.row)" type="text" size="small">删除</el-button>                </template>            </el-table-column>        </el-table>        <el-pagination                background                layout="prev, pager, next"                :total="total"                page-size="2"                @current-change="page">        </el-pagination>    </div></template><script>    import axios from 'axios';    export default {        name: "HomePage",        methods: {            handleClick(row) {                this.$router.push({                    path: '/useredit',                    query:{                        number: row.number,                        name: row.name                    }                })            },            deleteClick(row){                // var that=this;                axios.delete('http://localhost:8081/homepage/delete/'+row.number).then(function (response) {                    console.log(response)                })            },            //当被点击页数的时候,跳转            page(currPage){                var that=this;                axios.get('http://localhost:8081/homepage/query/'+(currPage-1)*3+'/3').then(function (response) {                    that.tableData=response.data;                })            }        },        //被创立的时候,显示第一页        created() {            var that=this;            axios.get('http://localhost:8081/homepage/query/0/3').then(function (response) {                //给数据                that.tableData=response.data;                // console.log(response.data)            }),                axios.get('http://localhost:8081/homepage/all').then(function (response) {                    //取得总长度                    that.total=response.data.length ;                })        },        data() {            return {                total: 10,                tableData: [{                    number: '编号',                    name: '姓名'                }]            }        }    }</script><style scoped></style>

2.3.2 查看用户

在views文件夹下创立文件:UserView.vue,内容如下:

<template>    <div>        <table>            <tr>                <td>编号</td>                <td>姓名</td>            </tr>            <tr v-for="user in users"  :key="user">                <td>{{user.number}}</td>                <td>{{user.name}}</td>            </tr>        </table>    </div></template><script>    import axios from 'axios';    export default {        name: "UserView",        data(){            return {                users:[                    {                        number: 1003,                        name: '张三',                    },                    {                        number: 1004,                        name: '李四',                    }                ]            }        },        created() {            var that=this;            axios.get('http://localhost:8081/homepage/view').then(function (resp) {                that.users=resp.data;            })        }    }</script><style scoped></style>

2.3.3 增加用户

在views文件夹下创立文件:UserAdd.vue,内容如下:

<template>    <div>        <el-form :model="ruleForm" status-icon :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">            <el-form-item label="用户编号" prop="number">                <el-input  v-model="ruleForm.number" ></el-input>            </el-form-item>            <el-form-item label="用户名" prop="name">                <el-input v-model="ruleForm.name"></el-input>            </el-form-item>            <el-form-item>                <el-button type="primary" @click="submitForm('ruleForm')">提交</el-button>                <el-button @click="resetForm('ruleForm')">重置</el-button>            </el-form-item>        </el-form>    </div></template><script>    import axios from 'axios';    export default {        name: "UserAdd",        data() {            var validateNumber = (rule, value, callback) => {                if (value === '') {                    callback(new Error('请输出用户编号'));                } else {                    if (this.ruleForm.number !== '') {                        //如果不为空                    }                    callback();                }            };            var validateName = (rule, value, callback) => {                if (value === '') {                    callback(new Error('请输出用户名'));                } else {                    if (this.ruleForm.name !== '') {                        //如果不为空                    }                    callback();                }            };            return {                ruleForm: {                    number: '',                    name: ''                },                rules: {                    number: [                        { validator: validateNumber, trigger: 'blur' }                    ],                    name: [                        { validator: validateName, trigger: 'blur' }                    ]                }            };        },        methods: {            submitForm(formName) {                var that=this;                this.$refs[formName].validate((valid) => {                    if (valid) {                        //提交胜利后要做的事件                        // alert('submit!');                        console.log(that.ruleForm)                        axios.post('http://localhost:8081/homepage/add',that.ruleForm).then(function (response) {                            console.log(response);                        })                    } else {                        console.log('error submit!!');                        return false;                    }                });            },            resetForm(formName) {                this.$refs[formName].resetFields();            }        }    }</script><style scoped></style>

2.3.4 批改App

批改App.vue为:

<template>  <div id="app">    <el-container style="height: 500px; border: 1px solid #eee">      <el-aside width="200px" style="background-color: rgb(238, 241, 246)">        <el-menu :default-openeds="['1']" router>          <el-submenu index="1">            <template slot="title"><i class="el-icon-message"></i>用户治理</template>            <el-menu-item-group>              <el-menu-item index="/">首页</el-menu-item>              <el-menu-item index="/userView">全副用户</el-menu-item>              <el-menu-item index="/userAdd">增加用户</el-menu-item>            </el-menu-item-group>          </el-submenu>        </el-menu>      </el-aside>      <el-container>        <el-header style="text-align: right; font-size: 12px">          <span>Snowstorm</span>        </el-header>        <br><br>        <router-view></router-view>      </el-container>    </el-container>  </div></template><style>  .el-header {    background-color: #B3C0D1;    color: #333;    line-height: 60px;  }  .el-aside {    color: #333;  }</style><script>  export default {    data() {      const item = {      };      return {        tableData: Array(20).fill(item)      }    }  };</script>

2.3.5 批改index

在 router/index.js 中 const routes 函数批改为:

const routes = [  {    path: '/',    name: '首页',    component: HomePage  },  {    path: '/userview',    name: '全副用户',    component: () => import(/* webpackChunkName: "user" */ '../views/UserView.vue')   },   {    path: '/useradd',    name: '增加用户',    component: () => import(/* webpackChunkName: "user" */ '../views/UserAdd.vue')   },   {    path: '/useredit',    name: '编辑用户',    component: () => import(/* webpackChunkName: "user" */ '../views/UserAdd.vue')   }]

3 后端

3.1 Controller

内容为:

@RestController@RequestMapping("/homepage")public class MyController {    @Resource    MyService myService;    // 查看全副数据    @GetMapping("/view")    public List<UserDTO> userView(){        return myService.userView();    }    // 增    @PostMapping("/add")    public int userAdd(@RequestBody UserDTO user){        myService.userAdd(user);        return 0;    }    // 删    @DeleteMapping("/delete/{number}")    public int deleteBook(@PathVariable("number") Integer number){        return myService.userDelete(number);    }    // 改    @PutMapping("/edit")    public int userEdit(@RequestBody UserDTO user){        return myService.userEdit(user);    }    // 查    @GetMapping("/query/{start}/{length}")    public List<UserDTO> userQuery(@PathVariable("start") Integer start,@PathVariable("length") Integer length){        System.out.println("users:" + myService.userQuery(start, length) + "\n");        return myService.userQuery(start, length);    }}

3.2 Service

内容为:

@Service@EnableSchedulingpublic class MyServiceImpl implements MyService {    @Resource    MyMapper myMapper;    // 返回全副用户类    public List<UserDTO> userView(){        System.out.println("users:" + myMapper.userView() + "\n");        return myMapper.userView();    }    public Integer userAdd(UserDTO user){        System.out.println("users:" + user + "\n");        return myMapper.userAdd(user);    }    public Integer userDelete(int number){        System.out.println("number:" + number + "\n");        return myMapper.userDelete(number);    }    public Integer userEdit(UserDTO user){        System.out.println("user:" + user + "\n");        return myMapper.userEdit(user);    }    public List<UserDTO> userQuery(int start, int length){        System.out.println("start:" + start + "high:" + length + "\n");        return myMapper.userQuery(start, length);    }}

3.3 dao

内容为:

@Mapperpublic interface MyMapper {    List<UserDTO> userView();    Integer userAdd(UserDTO user);    Integer userDelete(int number);    Integer userEdit(UserDTO user);    List<UserDTO> userQuery(int start, int length);}

3.4 model

文件名UserDTO,内容为:

@Datapublic class UserDTO {    private Integer number;    private String name;    public Integer getNumber() {        return number;    }    public void setNumber(Integer number) {        this.number = number;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}

3.5 跨域配置

文件名Config,内容为:

@Configurationpublic class Config implements WebMvcConfigurer {    @Override    public void addCorsMappings(CorsRegistry registry) {        registry.addMapping("/**")                .allowedOrigins("*")                .allowedMethods("GET","HEAD","POST","DELETE","OPTIONS","PUT")                .allowCredentials(true)                .maxAge(3600)                .allowedHeaders("*");    }}

4 运行成果

4.1 主页

4.2 全副用户

4.3 增加用户

 
 

学习更多编程常识,请关注我的公众号:

代码的路