java前后端项目问题总结

java前后端项目问题总结

1、字段

数据库

数据库在建表时除了需要的字段还有六个必要字段

主键 id

逻辑删 is_delete

创建人create_by

创建时间create_time

修改人 update_by

修改时间 update_time

这些字段在实体类中写法

复制代码
//@Date注解会自动生成一个无参构造,生成get,set方法,toString方法
@Data 

//@TableName用来表示这个实体类对应的是数据库里的哪个表
@TableName("student_score")

//这里我们继承了 Serializable用于将对象序列化
public class StudentScoreEntity implements Serializable {

//serialVersionUID叫做流标识符,即类的版本定义,作用是在序列化时保持版本的兼容性
    private static final long serialVersionUID = 1L;

//标明主键
    @TableId
    private Long id;

//对于时间类型的数据,要加上格式,并与前端的格式对应    
   @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
    private Date examTime; 

//对于多表查询中的不属于这个类的字段,用@TableField(exist = false)标记
    @TableField(exist = false)
    private String username;

    /**
     * 上传人,通过SecurityUtils.getSubject().getPrincipal();方法获取
     */
    private Long createBy;
​
    /**
     * 上传时间,加上时间格式
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
     * 更新人,在数据库中字段格式用下划线 update_by,在实体类中通过 驼峰命名来表示updateBy
     */
​
    private Long updateBy;
​
    /**
     * 更新时间
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
    private Date updateTime;
​
    /**
     * 逻辑删除标识@TableLogic:1-删除,0-正常,在配置文件配置相关信息
     在字段中不能出现is关键词,随意加注解@TableField("is_deleted")
     */
    @TableField("is_deleted")
    @TableLogic
    private Integer deleted;
​
}
复制代码
在前端vue中的字段名称对应的是实体类的名称
复制代码
dataForm: {
          id: 0,
          userId: '',
          maths: '',
          chinese: '',
          english: '',
          examTime: '',
        },

2、前端发送请求使用Mapping和PostMapping

@GetMapping注解可以用于类和方法上,用于定义HTTP GET请求的URL路径。当客户端发送HTTP GET请求时,后端会自动将请求映射到具有相应URL路径的控制器方法上,是 @RequestMapping的快捷形式。

@PostMapping 注解用来处理客户端发送的 POST 请求的。 是由 Spring Boot 提供的一个组合注解,它包含了 @RequestMapping 和 @ResponseBody 注解。其中,@RequestMapping 注解用来声明请求的路径和请求方法,@ResponseBody 注解用来告诉 Spring Boot,返回值需要转换为 JSON 或 XML 格式

3、格式

对于多表查询的xml文件里的sql语句要注意格式,属于同一个内容的写在一行,其他的分行,对于有条件的语句,如果有不管条件是否存在都要执行的语句,写在第一行,字段和数据库中的表字段一致,比如

复制代码
<select id="selectByPage" resultType="com.wedu.modules.test.entity.StudentScoreEntity">
        select ss.*,u.username as username from student_score ss
        left join sys_user u on u.user_id = ss.user_id
​
        <where>
            ss.is_deleted = 0//写在第一行
            <if test="userId != null ">
                and ss.user_id  = #{userId}
            </if>
        </where>
        order by ss.exam_time desc
    </select>

前端格式

1)前端主要用来展示页面,要注意页面设计是否美观,比如设计的输入框大小是否一致,

2)尽量使用组件,不用输入,避免产生不必要的输入错误问题

3)注意前端代码文件格式,尽量使用空格键保持页面整洁,使用的字段尽量使用复制避免出错,不要写一些不需要的字段造成误解

4、运行

运行代码时尽量后端使用debug运行,常用两个按钮,一个在两个断点间执行,一个一行一行执行。

后端使用F12键运行,使用快捷键F12在页面中打开控制台看报错,网络用来查看请求接口,主要看Fetch/XHR,看标头(对应常规),载荷(postman请求参数),预览(返回对象)三个指标。

5、DAO层的参数问题,Dao层传入参数的话用@param接受,如

service层

复制代码
IPage<StudentScoreEntity> page = this.baseMapper.selectByPage(
                new Query<StudentScoreEntity>().getPage(params),
                StringUtils.isNullOrEmpty(username)?username:null,
                student?getUserId():null
        );

dao层

复制代码
IPage<StudentScoreEntity> selectByPage(@Param("page") IPage<StudentScoreEntity> page, @Param("username") String username,@Param("userId") Long userId);
相关推荐
jamison_15 天前
文心一言与 DeepSeek 的竞争分析:技术先发优势为何未能转化为市场主导地位?
人工智能·ai·chatgpt·gpt-3·1024程序员节
NaZiMeKiY5 天前
HTML5前端第六章节
前端·html·html5·1024程序员节
jamison_19 天前
颠覆未来:解锁ChatGPT衍生应用的无限可能(具体应用、功能、付费模式与使用情况)
ai·chatgpt·1024程序员节
NaZiMeKiY14 天前
HTML5前端第七章节
1024程序员节
earthzhang202118 天前
《Python深度学习》第四讲:计算机视觉中的深度学习
人工智能·python·深度学习·算法·计算机视觉·numpy·1024程序员节
明明真系叻1 个月前
2025.3.2机器学习笔记:PINN文献阅读
人工智能·笔记·深度学习·机器学习·1024程序员节·pinn
bitenum1 个月前
【C++/数据结构】队列
c语言·开发语言·数据结构·c++·青少年编程·visualstudio·1024程序员节
IT学长编程1 个月前
计算机毕业设计 基于SpringBoot的智慧社区管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
java·spring boot·后端·毕业设计·课程设计·论文笔记·1024程序员节
qq_382391331 个月前
WPF框架学习
学习·wpf·1024程序员节
✿ ༺ ོIT技术༻2 个月前
Linux:TCP和守护进程
linux·运维·服务器·网络·tcp/ip·1024程序员节