两种打包方式:jar包和War包。
下面编写一个接口访问数据库的例子:
# 配置Mybatis数据源 spring: datasource: url: jdbc:mysql://XXX.XXX.XXX.252:3306/数据库名称?useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false username: 用户名 password: 密码 driver-class-name: com.mysql.cj.jdbc.Driver
package com.tg.springbootprojectpack.Entity; import java.util.Date; import java.io.Serializable; /** * (Appkm)实体类 * * @author TGjava */ public class Appkm implements Serializable { private static final long serialVersionUID = 690888387321209032L; private Integer id; /** * 归属用户 */ private Integer upid; /** * 应用ID */ private Integer appid; /** * 卡密 */ private String kami; /** * 卡密类型 */ private String type; private String note; /** * 卡密对应的值 */ private Integer amount; /** * 使用者 */ private String user; /** * 使用时间 */ private Long useTime; /** * 结束时间 */ private Long endTime; /** * 添加时间 */ private Date addtime; /** * 是否使用 */ private String kmUse; /** * 解绑次数 */ private Integer kmChange; /** * 单码卡密类型 */ private String kmTime; /** * 使用者IP */ private String userIp; /** * 卡密解绑时间 */ private Long kmChangeTime; /** * 状态 */ private String state; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public Integer getUpid() { return upid; } public void setUpid(Integer upid) { this.upid = upid; } public Integer getAppid() { return appid; } public void setAppid(Integer appid) { this.appid = appid; } public String getKami() { return kami; } public void setKami(String kami) { this.kami = kami; } public String getType() { return type; } public void setType(String type) { this.type = type; } public String getNote() { return note; } public void setNote(String note) { this.note = note; } public Integer getAmount() { return amount; } public void setAmount(Integer amount) { this.amount = amount; } public String getUser() { return user; } public void setUser(String user) { this.user = user; } public Long getUseTime() { return useTime; } public void setUseTime(Long useTime) { this.useTime = useTime; } public Long getEndTime() { return endTime; } public void setEndTime(Long endTime) { this.endTime = endTime; } public Date getAddtime() { return addtime; } public void setAddtime(Date addtime) { this.addtime = addtime; } public String getKmUse() { return kmUse; } public void setKmUse(String kmUse) { this.kmUse = kmUse; } public Integer getKmChange() { return kmChange; } public void setKmChange(Integer kmChange) { this.kmChange = kmChange; } public String getKmTime() { return kmTime; } public void setKmTime(String kmTime) { this.kmTime = kmTime; } public String getUserIp() { return userIp; } public void setUserIp(String userIp) { this.userIp = userIp; } public Long getKmChangeTime() { return kmChangeTime; } public void setKmChangeTime(Long kmChangeTime) { this.kmChangeTime = kmChangeTime; } public String getState() { return state; } public void setState(String state) { this.state = state; } public YixiAppkm() { } public YixiAppkm(Integer id, Integer upid, Integer appid, String kami, String type, String note, Integer amount, String user, Long useTime, Long endTime, Date addtime, String kmUse, Integer kmChange, String kmTime, String userIp, Long kmChangeTime, String state) { this.id = id; this.upid = upid; this.appid = appid; this.kami = kami; this.type = type; this.note = note; this.amount = amount; this.user = user; this.useTime = useTime; this.endTime = endTime; this.addtime = addtime; this.kmUse = kmUse; this.kmChange = kmChange; this.kmTime = kmTime; this.userIp = userIp; this.kmChangeTime = kmChangeTime; this.state = state; } }
package com.tg.springbootprojectpack.Controller; import com.tg.springbootprojectpack.Entity.YixiAppkm; import com.tg.springbootprojectpack.Mapper.AppkmMapper; import com.tg.springbootprojectpack.util.ApiResponse; import jakarta.annotation.Resource; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController @RequestMapping("km") public class AppkmController { @Resource //依赖注入 private AppkmMapper appkmMapper; @RequestMapping("getInfo") public Object getAllInfo(){ try { List allKm = appkmMapper.getAllKm(); if (allKm != null){ System.out.println("查询完毕"); } return ApiResponse.success(allKm); }catch (Exception e){ return ApiResponse.error(500,e.getMessage()); } } } //ApiResponse是一个api请求的处理类,把从数据库的数据拿出来整理成JSON格式 //搭配响应码,得到真实的接口数据
目前例子为春注解开发,所以暂时不写mapper.xml配置文件
package com.tg.springbootprojectpack.Mapper; import com.tg.springbootprojectpack.Entity.YixiAppkm; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; import java.util.List; @Mapper public interface AppkmMapper { @Select("select * from appkm") List getAllKm(); }
查看控制台有无报错情况,正常如下:
http://localhost:1000/km/getInfo
可以看到已经查询出数据了:
双击package
如图则打包成功去对应路径查看;
注意:这里的Java的版本要和你本地打包的Java版本一致;
nohup是“no hang up”的缩写,意味着不挂断运行。当使用nohup运行命令时,即使你退出登录或关闭终端,该命令仍然会在后台运行。nohup的基本用法是在命令前加上nohup并在命令后加上**&**符号,以使命令在后台运行。
命令格式如下:
nohup command > output.file 2>&1 & 举例:nohup java -jar SpringBootProjectPack-0.0.1-SNAPSHOT.jar > myapp.log 2>&1 &
这里是它的各个部分的解释:
- nohup: 命令,用于运行后续的命令并忽略挂断信号。
- command: 你想要在后台运行的命令,例如java -jar your-app.jar。
- > output.file: 将标准输出(stdout)重定向到output.file文件中。这意味着程序的输出将>会被写入到这个文件,而不是显示在终端上。
- 2>&1: 将标准错误(stderr)也重定向到同一个文件中。这样,无论是正常的输出还是错误信>息,都会被记录在同一个文件里。
- &: 将命令放到后台执行。
tail filename
tail -n N filename
这里,**N**是你想要查看的行数。如果你想看更多或更少的行,只需将**N**替换为相应的数字。
tail -f filename
这个命令非常适合跟踪日志文件的实时更新。当文件有新内容添加时,tail会自动显示这些新增的内容。
tail -n N file1 file2 file3
这会显示每个文件的最后N行。
tail -f -n N filename
这对于在文件更新频繁时只关注最近的几条记录特别有用。
当Status为UP时,说明项目正常。
到此写好的项目就部署到自己的服务器上了,把接口整合到Web前端即可使用!!!