4.品牌管理小demo后端

飞一样的编程
飞一样的编程
擅长邻域:Java,MySQL,Linux,nginx,springboot,mongodb,微信小程序,vue

分类: Java vue 专栏: 2024年ssm框架 标签: servlet开发 jdbc

2024-09-09 16:26:54 192浏览

品牌管理小demo后端

技术要求

前端后端都要完成

前端用 vue2+elementUI+axios(要求用脚手架的方式,vue.js 的那种省略不教)

后端用 jdbc+servlet+dao 设计模式

数据库 MySQL,表也自己设计或者提供一个.sql 文件

dao 设计模式看这个文档

https://blog.csdn.net/m0_55640070/article/details/129887554

要实现的功能

一个品牌数据的增删改查,表单验证,分页带条件查询等,效果图如下

特别说明:上面效果图少了个分页功能,请自行补上

核心参考代码

DRIVER=com.mysql.cj.jdbc.Driver
URL = jdbc:mysql://localhost:3306/vue-db?serverTimezone=Asia/Shanghai&characterEncoding=utf8
USER = root
PWD = 123456
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Brand {
    // id 主键
    private Integer id;
    // 品牌名称
    private String brandName;
    // 企业名称
    private String companyName;
    // 排序字段
    private Integer ordered;
    // 描述信息
    private String description;
    // 状态:0:禁用  1:启用
    private Integer status;
}


@Data
@AllArgsConstructor
@NoArgsConstructor
public class PageInfo {
    private Integer total;//总条数
    private Integer pages;//总页数
    private Integer pageSize;//页面尺寸
    private Integer pageNum;//第几页

    private List data;//数据

    public void setPages(Integer pageSize) {
        if(pageSize ==null){
            return ;
        }

        if(total % pageSize == 0){
            this.pages=total/pageSize;
        }else{
            this.pages=total/pageSize+1;
        }

    }
}
package com.jf3q.vue.utils;

import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.*;

// DbHelper类
public class DbHelper {

    private static String DRIVER;
    private static String URL;
    private static String USER;
    private static String PWD;

    static {//执行一次,执行一次
        Properties properties = new Properties();
        try {
            InputStream inputStream = DbHelper.class.getClassLoader().getResourceAsStream("db.properties");
            properties.load(inputStream);

            DRIVER = properties.getProperty("DRIVER");
            URL = properties.getProperty("URL");
            USER = properties.getProperty("USER");
            PWD = properties.getProperty("PWD");// 根据属性名字,获取属性值
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
//        获取连接
        private static Connection getConn() throws SQLException, ClassNotFoundException {
            Class.forName(DRIVER);
            return DriverManager.getConnection(URL,USER,PWD);
        }

//        使用listMAp 进行数据操作,封装一个查询方法
    public static List<Map<String,Object>> Query(String sql, Object... params){
       Connection connection =null;
       PreparedStatement statement = null;
        ResultSet resultSet = null;
        List<Map<String,Object>> list = new ArrayList<>();

        try {
            connection = getConn();
            statement = connection.prepareStatement(sql);
            setParams(statement,params);//调用方法绑定参数
            resultSet = statement.executeQuery();
            ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
            while (resultSet.next()) { //逐行读取,next():移动指针到 下一行,判断是否读到数据,一次读取一行
                Map<String, Object> rowMap = new HashMap<>(); //代表一行
                for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
//                    getColumnLabel():获取列的别名,如果没有就获取列名
                    rowMap.put(resultSetMetaData.getColumnLabel(i), resultSet.getObject(i) == null ? " " : resultSet.getObject(i));
                }
                list.add(rowMap);//填充list
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            closeAll(connection, statement, resultSet);//调用关闭方法
        }
        return list;
    }


// 关闭方法
    private static void closeAll(Connection connection, PreparedStatement statement, ResultSet resultSet) {
        if (resultSet != null) {
            try {
                resultSet.close();
            } catch (SQLException e) {
                System.out.println(e.getMessage());
            }
        }
        if (statement != null) {
            try {
                statement.close();
            } catch (SQLException e) {
                System.out.println(e.getMessage());
            }
        }
        if (connection != null) {
            try {
                connection.close();
            } catch (SQLException e) {
                System.out.println(e.getMessage());
            }
    }
    }

//    更新操作
public static boolean update(String sql, Object... params) {
    Connection connection = null;
    PreparedStatement statement = null;
    boolean result = false;
    try {
        connection = getConn();
        statement = connection.prepareStatement(sql);//预编译
        setParams(statement, params);//调用方法绑定参数
        int n = statement.executeUpdate();
        if (n > 0) {
            result = true;
        }
    } catch (SQLException e) {
        throw new RuntimeException(e);
    } catch (ClassNotFoundException e) {
        throw new RuntimeException(e);
    } finally {
        closeAll(connection, statement, null);
    }
    return result;
}

    //    设置参数
    private static void setParams(PreparedStatement statement,Object[] params) throws SQLException {
        if (params != null) {
            for (int i = 0; i < params.length; i++) {
                statement.setObject(i + 1, params[i]);
            }
        }

    }
}

  // 读取请求体中的JSON字符串
        BufferedReader reader = request.getReader();
        String line;
        StringBuffer jsonSb = new StringBuffer();
        //reader.readLine()是一行一行读取  line = reader.readLine()这个的意思就是把读取的这行字符串赋值给line这个变量
        while ((line = reader.readLine()) != null) {
            jsonSb.append(line);//json格式的 字符串
        }


        // 将JSON字符串转换为Java对象
        // 假设我们期望的JSON对应于以下Java类
        Brand brand = JSON.parseObject(jsonSb.toString(), Brand.class);
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		// TODO Auto-generated method stub
		request.setCharacterEncoding("UTF-8");
		response.setCharacterEncoding("UTF-8");

		//由于咱们是前后分离项目了,不走jsp页面了,所以直接返回json数据就行了
		response.setContentType("application/json;charset=UTF-8");
		chain.doFilter(request, response);
	}

作业

今天完成所有后端接口:包含:分页带条件查询接口。新增接口 删除接口 修改接口,批量删除接口并用apipost测试成功!!!

好博客就要一起分享哦!分享海报

此处可发布评论

评论(0展开评论

暂无评论,快来写一下吧

展开评论

您可能感兴趣的博客

客服QQ 1913284695