JAVA项目实战开发增删改查案例(一)前后端项目分离

     随着目前java技术的迭代更新,每天我们需要去更新新的技术,同时也要去整合旧的知识体系,目前这套实战开发采用2019年最流行的前后端工程开发,如果你工作了几年你也可以作为参考,如果你是小白这套实战适合你学到技术和知识的完整体系。

第一章节首先先看最终效果

           采用后台采用spring boot微服务架构,数据库持久层mybaties 前端采用当下流行的layerui封装而成的前端框架,在这里你可以学习spring boot微服务架构,前端css样式的编写,js发送http请求接口规范。

            有了这个架子以后你的工作中遇到的任何功能都能整合到这套框架中,最终形成自己的百度知识库,方便以后查阅。

               项目演示地址:http://www.liph.fun/business-Admin

 

 

 

第二章以上是普通用户登录的功能列表超级管理员登录待开发中

              今天太晚了,只能讲解一个项目的基础功能框架搭建以及后台技术的应用,前端框架采用layerui封装框架,封装统一的弹出窗风格。

              

前端技术栈说明 
bootstrapcss样式框架 
jqgird系统查询列表组件 
jqueryui原生jquery样式 
layerui基于css和js封装的开源框架 
bootstrap datatablebootstrap 推出的一个用于系统列表显示组件 
ajax前后端数据交互异步框架 
.............等................ 

           通过学习这套实战的前端,你完全可以胜任一个公司的前端开发工作,首先你学会了如何规范开发页面样式以及如何自定义各种风格的页面样式,通过学习一些数据交互掌握ajax内部原理。

            

后端技术栈说明 
spring boot当下流行的框架之一 
mybaties方便灵活的sql定义让java很好的与数据库交互 
spring sceurity安全认证框架保护你程序资源的安全 
logback日志组件 
common公共组件common公共组件内部数据格式定义、统一异常处理、统一工具集合 
mybaties generator
MVC  dao层代码自动加工厂 

第三章如何搭建起来自己的前后端分离项目

  1.    pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.java.cmdb</groupId>
    <artifactId>opscmdb</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <modules>
        <module>cmdb-common</module>
        <module>cmdb-mbg</module>
        <module>cmdb-admin</module>
    </modules>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>

    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--MyBatis分页插件-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.10</version>
        </dependency>
        <!--集成druid连接池-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>
    </dependencies>


</project>
  1.   application.yml
    spring:
      profiles:
        active: prod #默认为开发环境
    
    mybatis:
      mapper-locations:
        - classpath:dao/*.xml
        - classpath*:com/**/mapper/*.xml
    
    jwt:
      tokenHeader: Authorization #JWT存储的请求头
      secret: mySecret #JWT加解密使用的密钥
      expiration: 604800 #JWT的超期限时间(60*60*24)
      tokenHead: Bearer  #JWT负载中拿到开头
    
    aliyun:
      oss:
        endpoint: oss-cn-shenzhen.aliyuncs.com
        accessKeyId: test
        accessKeySecret: test
        bucketName: macro-oss
        policy:
          expire: 300
        maxSize: 10
        callback: http://localhost:8080/aliyun/oss/callback
        dir:
          prefix: mall/images/
    
    logging:
      level:
        root: info #日志配置DEBUG,INFO,WARN,ERROR
        com.gotop.cmdb: debug
    #  file: demo_log.log #配置日志生成路径
    #  path: /var/logs #配置日志文件名称
        #增加日志生成路径
        path: ./logs
    server:
          #端口号
          port: 8888
    

     

  2. 用工具生成dao层代码
public class CommentGenerator extends DefaultCommentGenerator {
    private boolean addRemarkComments = false;
    private static final String EXAMPLE_SUFFIX="Example";
    private static final String API_MODEL_PROPERTY_FULL_CLASS_NAME="io.swagger.annotations.ApiModelProperty";

    /**
     * 设置用户配置的参数
     */
    @Override
    public void addConfigurationProperties(Properties properties) {
        super.addConfigurationProperties(properties);
        this.addRemarkComments = StringUtility.isTrue(properties.getProperty("addRemarkComments"));
    }

    /**
     * 给字段添加注释
     */
    @Override
    public void addFieldComment(Field field, IntrospectedTable introspectedTable,
                                IntrospectedColumn introspectedColumn) {
        String remarks = introspectedColumn.getRemarks();
        //根据参数和备注信息判断是否添加备注信息
        if(addRemarkComments&&StringUtility.stringHasValue(remarks)){
//            addFieldJavaDoc(field, remarks);
            //数据库中特殊字符需要转义
            if(remarks.contains("\"")){
                remarks = remarks.replace("\"","'");
            }
            //给model的字段添加swagger注解
            field.addJavaDocLine("@ApiModelProperty(value = \""+remarks+"\")");
        }
    }

    /**
     * 给model的字段添加注释
     */
    private void addFieldJavaDoc(Field field, String remarks) {
        //文档注释开始
        field.addJavaDocLine("/**");
        //获取数据库字段的备注信息
        String[] remarkLines = remarks.split(System.getProperty("line.separator"));
        for(String remarkLine:remarkLines){
            field.addJavaDocLine(" * "+remarkLine);
        }
        addJavadocTag(field, false);
        field.addJavaDocLine(" */");
    }

    @Override
    public void addJavaFileComment(CompilationUnit compilationUnit) {
        super.addJavaFileComment(compilationUnit);
        //只在model中添加swagger注解类的导入
        if(!compilationUnit.isJavaInterface()&&!compilationUnit.getType().getFullyQualifiedName().contains(EXAMPLE_SUFFIX)){
            compilationUnit.addImportedType(new FullyQualifiedJavaType(API_MODEL_PROPERTY_FULL_CLASS_NAME));
        }
    }
}

4controller层请求接口

@RestController
@RequestMapping("api")
public class UserController {


    @Autowired
    public UserService userService;


    /***
     * 分页查询用户
     * @return
     */
    @RequestMapping(value = "/page/users",method = RequestMethod.GET)
    public CommonResult<CommonPage<TbUser>> getUserPage(TbUserRequestVo tbUserRequestVo){
        /***
         * 分页查询
         */
        List<TbUser> list=userService.queryUserByPage(tbUserRequestVo);

        return  CommonResult.success(CommonPage.restPage(list));
    }

    /***
     * 删除用户
     * @param id
     * @return
     */
    @DeleteMapping("demo/users/{id}")
    public  CommonResult deluser(@PathVariable Long id){
        int result= userService.deluser(id);
        if(result>0){
            return CommonResult.success(result);
        }
        return  CommonResult.failed();
    }
    @PostMapping("demo/users/add")
    public  CommonResult deluser(TbUser user){
        int result= userService.addUser(user);
        if(result>0){
            return CommonResult.success(result);
        }
        return  CommonResult.failed();
    }
    
}

前端集成框架目录

     

      说明:代码只是一堆代码堆积而成起来的架子我写的代码可能不全,如果有想学习的可以评论把邮箱留下我发你邮箱。或者去我的个人博客资源下载去下载:http://www.liph.fun/这套案例会持续更新。。。。。。

 

第三章后台运营管理平台的登录如何设计开发

       由于我的系统实战属于前后端分离框架开发,我有一个统一名字后台运营平台,因为他可以适用于任何领域的平台,他的业务流程和技术流程可以适用于任何面试场景,比如A公司肯定有系统涉及到登录模块。

      

 

 

        要睡着了,有点累了,登录模块和首页列表下一章会介绍

 

关于作者

http://www.liph.fun

 

 

 

  • 8
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
### 回答1: Java项目实战案例增删改查是在实际开发中经常会遇到的需求,它是指在一个Java项目中进行对数据库进行数据的增加、删除、修改和查询操作。下面将用300字中文回答如何实现。 首先,我们需要创建一个数据库,并为该数据库创建一个连接。在Java中使用JDBC技术来连接数据库,可以使用JDBC的API接口和相关的类来完成这个步骤。 接下来,我们需要实现增加数据的功能。通过使用JDBC的API接口和相关的类,我们可以将数据插入到数据库中。通过执行SQL语句,可以向数据库中的特定表中插入特定的数据。 然后,我们需要实现删除数据的功能。通过使用JDBC的API接口和相关的类,我们可以执行SQL语句来删除数据库中的特定表中的特定数据。 接着,我们需要实现修改数据的功能。通过使用JDBC的API接口和相关的类,我们可以执行SQL语句来修改数据库中特定表中的特定数据。 最后,我们需要实现查询数据的功能。通过使用JDBC的API接口和相关的类,我们可以执行SQL语句来查询数据库中的特定表中的特定数据。查询结果会返回一个ResultSet对象,我们可以通过ResultSet对象来获取相关的查询结果。 通过上述步骤,我们可以实现Java项目实战案例中的增删改查功能。这些功能在实际开发中非常常见,特别是对于需要操作数据库的项目来说,是非常重要的技术。掌握了这些技术,我们就可以更好地开发出符合需求的Java项目。 ### 回答2: Java项目实战案例中的增删改查常用于数据库操作。下面是一个简单示例,其中使用了Java和MySQL数据库。 首先,我们需要建立数据库表,这里以学生表为例,包括学生ID、姓名和年龄字段。 创建学生表的SQL语句如下: ``` CREATE TABLE student ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, age INT ); ``` 接下来,在Java项目中,我们需要使用JDBC连接到MySQL数据库,并编写增删改查的代码逻辑。 1. 增加操作: ``` public void addStudent(String name, int age) { try { Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/your_database_name", "your_username", "your_password"); String sql = "INSERT INTO student (name, age) VALUES (?, ?)"; PreparedStatement statement = conn.prepareStatement(sql); statement.setString(1, name); statement.setInt(2, age); statement.executeUpdate(); statement.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } } ``` 2. 删除操作: ``` public void deleteStudent(int id) { try { Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/your_database_name", "your_username", "your_password"); String sql = "DELETE FROM student WHERE id = ?"; PreparedStatement statement = conn.prepareStatement(sql); statement.setInt(1, id); statement.executeUpdate(); statement.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } } ``` 3. 修改操作: ``` public void updateStudent(int id, String name, int age) { try { Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/your_database_name", "your_username", "your_password"); String sql = "UPDATE student SET name = ?, age = ? WHERE id = ?"; PreparedStatement statement = conn.prepareStatement(sql); statement.setString(1, name); statement.setInt(2, age); statement.setInt(3, id); statement.executeUpdate(); statement.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } } ``` 4. 查询操作: ``` public List<Student> getAllStudents() { List<Student> students = new ArrayList<>(); try { Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/your_database_name", "your_username", "your_password"); String sql = "SELECT * FROM student"; Statement statement = conn.createStatement(); ResultSet resultSet = statement.executeQuery(sql); while (resultSet.next()) { int id = resultSet.getInt("id"); String name = resultSet.getString("name"); int age = resultSet.getInt("age"); Student student = new Student(id, name, age); students.add(student); } resultSet.close(); statement.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } return students; } ``` 以上是一个简单的Java项目实战案例,实现了对学生表的增删改查操作。当然,实际的项目可能会更加复杂,需要根据具体情况进行相应的编码和数据库操作。 ### 回答3: Java项目实战案例中的增删改查是指在项目中对数据进行新增、删除、修改和查询操作。下面以一个简单的学生信息管理系统为例进行介绍。 1. 增加(Create): 在学生信息管理系统中,可以通过输入学生的姓名、年龄、性别等信息来实现学生信息的新增。首先,创建一个添加学生信息的界面,接收用户输入的学生信息,并将其保存到数据库或文件中。 2. 删除(Delete): 当需要删除学生信息时,可以根据学生的学号或姓名等唯一标识符进行删除操作。在学生信息管理系统中,可以在界面中输入学生的学号或姓名,在数据库中查找对应的学生信息并进行删除操作。 3. 修改(Update): 当学生信息发生变化时,可以通过修改操作更新学生信息。在学生信息管理系统中,可以先根据学生的学号或姓名进行查询,然后修改相应的学生信息并保存到数据库中。 4. 查询(Retrieve): 学生信息管理系统中的查询操作可以根据不同的条件进行查询,如学号、姓名、年龄等。用户可以在界面中输入相应的查询条件,系统根据条件从数据库中检索相关的学生信息,并将结果返回给用户。 总结: 以上是在实际的Java项目中常见的增删改查操作步骤。通过使用合适的技术手段,如数据库、文件读写等,能够实现对数据的有效管理和操作。在实际项目中,这些操作通常会结合其他功能一起使用,以满足系统需求和用户期望。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值