Cursor助力Java开发

发布于:2025-02-23 ⋅ 阅读:(12) ⋅ 点赞:(0)

视频讲解



这篇文章来教大家如何使用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. 最最最最重要的就是先下载尝试

网站公告

今日签到

点亮在社区的每一天
去签到