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);
相关推荐
学传打活13 小时前
【边打字.边学昆仑正义文化】_进阶篇5 宇宙星系的运转(续3)
微信公众平台·1024程序员节·汉字·昆仑正义文化
学传打活6 天前
【边打字.边学昆仑正义文化】_进阶篇5 宇宙星系的运转(续1)
微信公众平台·1024程序员节·汉字·昆仑正义文化
fangzhanpeng16814 天前
快速掌握C#语言基础知识点(1.基础数据类型)
开发语言·c#·1024程序员节
无己心16 天前
面向多平台 AI 搜索引擎的适配层架构设计
前端·人工智能·搜索引擎·ai·1024程序员节
u01030552722 天前
AI驱动的安卓UI自动生成功能实现
人工智能·1024程序员节
u01030552722 天前
长株潭智能体赋能腾讯元器链接共享
1024程序员节
云贝贝贝23 天前
OceanBase认证体系介绍与备考指南
运维·服务器·oceanbase·1024程序员节
u01030552724 天前
Java图像处理实战指南
人工智能·1024程序员节
u01030552724 天前
Java AWT鼠标事件全解析
人工智能·1024程序员节
u0103055271 个月前
Java实用类应用精讲
人工智能·1024程序员节