Cursor助力Java开发

视频讲解

这篇文章来教大家如何使用Cursor来开发Java,开始之前先来回答一个问题:Cursor是基于VSCODE二开的,可以用来写Java吗?

答案是可以的,就我使用了一段时间来说,虽然不如IDEA那么顺手,但它的Ai功能完全掩盖其它的不足。

一、Cursor的安装

直接去官网下载: https://www.cursor.com , 交互什么的和vscode一样(毕竟是基于vscode二开的)

导入Java项目,会提示安装一些Java扩展。下面是一些基本的插件(按照提示就会安装,MybatisX看个人需求)

  1. Extension Pack for Java
  2. Debugger for Java
  3. Language Support for Java™ by Red Hat
  4. Maven for Java
  5. Project Manager for Java
  6. Test Runner for Java
  7. IntelliJ IDEA Keybindings 保证大部分快捷键和IDEA一样
  8. MybatisX 可以在Mapper的接口和XML之间跳转

默认的主题颜色可能对大部分人来说太绚丽了,有些刺眼,可以在这里选择适合自己的主题颜色

Cursor默认的文件结构是一层一层的,和IDEA有点区别。通过设置可以让目录结构和IDEA一样

可以把「JAVA PROJECTS」 拖到侧边栏,这样更符合IDEA的习惯,启动项目,就算完成了Cursor的安装了

注:可以用Cursor和IDEA同时打开一个项目,Cursor默认会选择好maven和jdk,如果没有的话,可以在IDEA里面按照之前的方式设置一下,Cursor也会同步修改好的

Cursor 的侧边栏有2个窗口,CHAT 和 COMPOSER,开发代码的时候直接无脑选择 COMPOSER就行

  • CHAT 就理解成一个聊天对话框,你问它答
  • COMPOSER 是一个权限很大的CHAT,比如你让它写一个代码,它可以直接生成文件写好代码,对于它生成的代码,可以选择接受或拒绝

COMPOSER 还有 normal/agent 模式,agent 可以执行命令,比如你告诉它「提交代码」,它就可以 卡卡执行 git add . git commit 等,权限很大,用的时候要谨慎

开发

不要把Ai当成一个傻子,更不要把它当成上帝,而是把它当作一个人。当你和别人沟通的时候,你要说出背景和问题,有了清晰的背景和清晰的问题,别人才可以很好的给你答案。

对于写代码来说,背景就是「整个代码库」,问题就是指令,比如「为xx接口,新增一个xx字段的>查询条件」

Cursor的强大在于它可以很好的理解代码库,当你在 在 Composer 里面 @Codebase 它就理解了整个代码库,是真的理解了,不再是之前IDEA里面的插件一样含糊其词的理解。既如此那么在使用Cursor只剩下一个问题了:「描述问题,下达指令」

对于后端的代码,无非就是各种增删改查,我们要做的就是任务拆分,拆分成一个个可执行的小指令,发给Cursor让它去写代码。

千万不要觉得你的需求特殊,你的需求很复杂,再高的楼也是一砖一瓦堆砌起来的,复杂的需求最多就是涉及到的接口多,仅此而已,它只是多而不是难。

案例一

产品需求:为某个列表新增两个时间查询

需求工时: 0.5天

需求分析,需要被查询的2个字段,字段A数据库是时间,字段B数据库是日期,前端产品要求传递日期范围

那么就要在Controller的Query里面新增4个日期的接受字段,传递到Service的时候字段A相关的要转成时间,同时在XML里面加上对应的查询

三次对话完成了这个需求

对话 输入内容
1 @Codebase @DmsPatientPackageController.java 需要对 findPatientPackageWithPage 新增 created 和 expiryDate的范围查询, created前端传递的是日期格式,数据库是时间格式,需要在 @DmsPatientPackageViewServiceImpl.java 进行转换,
2 @Codebase 1、我习惯让开始叫From,结束叫To, 2、日期转成时间的时候开始要是00:00:00,结束要是 23:59:59, 3、你需要帮我完善SQL对这几个字段的处理 @PatientPackageMapper.xml
3 @Codebase createdTo 改为 createdDateTo,createdFrom 改为 createdDateFrom, createdBeginTime 改为 createdFrom, createdEndTime 改为 createdTo,expiryBeginDate 改为 expiryDateFrom,expiryEndDate 改为 expiryDateTo

在第一次对话的时候,从Controller到Xml 的代码就写完了,后面的都是简单的调优了。你没看错,它就是可以这么好的理解代码库。

案例二

当然你会觉得上面这个案例很简单,但本质上每一个复杂的需求,都会被拆分成很多个小的模块,整体复杂,具体一定不复杂,我们拆好之后就可以让Cursor去写代码了。

再比如,你可以看 视频中的这个案例,整个小系统的前后端全部都是Cursor生成的。并不是每一个都需要拆分成那么明确,你只需要需求明确就好了,比如下面在生成这个系统的时候我的一些对话。

需求 描述
排行榜接口 @Codebase @OrderController.java 在订单里面加一个排行榜接口。在 @OrderViewServiceImpl.java 的实现中,先获取非【终止】,近一年的全部订单,再从订单里面找出前5名的菜单,返回的字段:菜单id、菜单名称、点击次数
让它帮我格式化数据 @Codebase 在fm_menu里面加了一个字段side_dish,格式是[{"sideDishId": 5, "quantity": 1}, {"sideDishId": 2, "quantity": 0.2}],sideDishId是@SideDish.java里面的id,帮我完成这个字段的添加,且在@MenuBO.java和@MenuVO.java里面返回一个字段,List<String> sideDishs,里面是拼接好的结果,比如sideDishId=5的name是菜苔,结果就是菜苔 1把。

核心逻辑就是对话,讲清楚你的需求,如果它生成的不对,再反馈给它改就好了。其实这并不复杂,只要尝试用它做几个简单的小需求就找到感觉了。

建议

  1. 虽然可以直接用Cursor全部的开发,但体验不是很好,最重要的是当它改了代码,删除的是红色,新增的是绿色,在check代码的时候很难受。我现在都是用Cursor写代码,然后IDEA来check代码。同时打开一个项目切换一下并不麻烦,在IDEA里面看到的都是修改后的代码,check起来一目了然
  2. Ai是会犯错的,check代码很重要,当写完一个小的功能建议提交代码,不然写的多了后面想要会滚什么的相当麻烦
  3. 最最最最重要的就是先下载尝试
相关推荐
无心水40 分钟前
【分布式利器:腾讯TSF】10、TSF故障排查与架构评审实战:Java架构师从救火到防火的生产哲学
java·人工智能·分布式·架构·限流·分布式利器·腾讯tsf
Boilermaker19928 小时前
[Java 并发编程] Synchronized 锁升级
java·开发语言
Cherry的跨界思维8 小时前
28、AI测试环境搭建与全栈工具实战:从本地到云平台的完整指南
java·人工智能·vue3·ai测试·ai全栈·测试全栈·ai测试全栈
MM_MS8 小时前
Halcon变量控制类型、数据类型转换、字符串格式化、元组操作
开发语言·人工智能·深度学习·算法·目标检测·计算机视觉·视觉检测
꧁Q༒ོγ꧂9 小时前
LaTeX 语法入门指南
开发语言·latex
njsgcs9 小时前
ue python二次开发启动教程+ 导入fbx到指定文件夹
开发语言·python·unreal engine·ue
alonewolf_999 小时前
JDK17新特性全面解析:从语法革新到模块化革命
java·开发语言·jvm·jdk
一嘴一个橘子9 小时前
spring-aop 的 基础使用(啥是增强类、切点、切面)- 2
java
sheji34169 小时前
【开题答辩全过程】以 中医药文化科普系统为例,包含答辩的问题和答案
java
古城小栈9 小时前
Rust 迭代器产出的引用层数——分水岭
开发语言·rust