自学Javaweb入门案例流程(基于springboot、maven、mybatis、mysql、tomcat、postman等)

Javaweb案例

1 创建流程

1.1 环境配置

Jdk maven mysql的环境都要配置,MySQL还需要以管理员身份运行一些命令,并设置用户名以及密码。电脑的高级环境变量中配置

1.2 工程创建流程

创建springboot框架步骤如下:
选择generators——spring initializr,
location自定义无中文的路径,
language Java,
Type Maven,
Group com/cn + . +组织名,例如 com.hust
Artifact 项目名称,例如 springcase
自动生成Package name:com.hust.springcase
JDK 17
Java 17(或都选择11)
Packaging Jar

点击next

Spring Boot 3.2.2
Dependencies——Web——Spring Web
Dependencies——Developer Tools——lombok
Dependencies——SQL——MySQL Driver & Mybatis Framework
——Create
软件创建project中,加载maven依赖会花一些时间,此框架中java——com.hust.springcase包下会自带一个启动类SpringcaseApplication.java
到此即创建成功。

1.3 引入依赖

1.3.1 修改maven仓库

首先查看Setting——Build,Execution,Deployment——Build Tools——Maven中
Maven home path——…选择安装的的apache-maven-3.96文件夹 例如:C:/develop/apache-maven-3.9.6
User setting file——Override——选择安装的的apache-maven-3.96\conf\settings.xml 例如:C:\develop\apache-maven-3.9.6\conf\settings.xml
Local repository——Override——选择安装的的apache-maven-3.96文件夹 例如:C:\develop\apache-maven-3.9.6

1.3.2 引入起步依赖

引入起步依赖(web、mybatis、mysql驱动、lombok)
经过验证 springboot3.2.2 mybatis版本应该是3.0.3,这里如果版本号不匹配在服务器启动时会报错,启动不成功。
mysql的版本和在本地配置的版本要一致,不然连接数据库可能测试不成功。
以下是pom.xml中需要更改的部分,这里的版本号可以自行修改,每次修改完同步一下。

<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>3.2.2</version>
		<relativePath/> <!-- lookup parent from repository -->
</parent>
	
<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>3.0.3</version>
		</dependency>


		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>8.0.33</version>
		</dependency>


		<!-- Lombok: 简化Java代码,提高开发效率 -->
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>


	</dependencies>

1.4 配置文件

application.properties中引入mybatis的配置信息,用于和数据库的交互

#数据库连接
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/db01(db01是后面使用到的数据库名称)
spring.datasource.username=root
spring.datasource.password=1234

说明:root 1234分别是在配置本地环境的时候设置的用户名以及密码,更改为配置时的用户名以及密码,否则数据库连接失败


#开启mybatis的日志输出
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

#开启数据库表字段 到 实体类属性的驼峰映射(例如 my_batis————myBatis)
mybatis.configuration.map-underscore-to-camel-case=true

2 项目结构

src——main——java——com.hust——controller——DeptController©
src——main——java——com.hust——service——DeptService(I)
src——main——java——com.hust——service——impl——DeptServiceImpl©
src——main——java——com.hust——pojo——Dept©
src——main——java——com.hust——mapper——DeptMapper(I)
src——main——java——com.hust——SpringcaseApplication.java

前端工程 前端和后端通过Tomcat连接响应
后端工程(springboot三层结构,controller,service,mapper) web,mybatis,mysql驱动,lombok依赖
数据库mysql(和后端工程用mybatis连接)
pojo存放实体类的,还可能有别的层例如domain(这块儿后续补充

以下这三层的耦合越少越好

2.1 controller层

控制层:响应和前端工程,idea内置的Tomcat 8080端口
代码示例:

/**
 * 部门管理Controller
 */
//   这三行是先打出/**然后回车

@Slf4j  //日志相关操作
@RequestMapping("/depts") //抽取相同的请求路径
@RestController     //这个注解包含了responsebody,将返回值的对象转成json
public class DeptController {

    //日志的框架 对象(不使用
    //private static Logger log = LoggerFactory.getLogger(DeptController.class);

    @Autowired
    //注入Service接口交给IOC管理(自动获取实现类
    private DeptService deptService;


    /**
     * 查询部门数据
     * @return
     */
    //@RequestMapping(value = "/depts",method = RequestMethod.GET)  method是枚举类型
    //限定请求方式仅为get,以下直接写更方便常用的形式
	
    @GetMapping
    public Result list(){
        //输出日志,日志记录框架,日志记录对象logger
        log.info("查询全部部门数据");

        //调用service查询部门数据
        List<Dept> deptList = deptService.list();
        return Result.success(deptList);
    }



    /**
     * 删除部门数据
     * @return
     */
    @DeleteMapping("/{id}")   //需要使用请求路径的参数传入,需要加入注解@PathVariable
    public Result delete(@PathVariable Integer id){
        log.info("根据id删除部门:{}",id);
        //调用service删除部门
        deptService.delete(id);
        return Result.success();
    }



    /**
     * 新增部门
     * @return
     */
    @PostMapping
    public Result add(@RequestBody Dept dept){
        log.info("新增部门:{}",dept);
        //调用service里面的,不需要返回值
        deptService.add(dept);
        return Result.success();
    }
}

2.2 service层

业务层。存放业务代码,处理拿到的数据的业务逻辑
service接口

public interface DeptService {
    /**
     * 查询全部部门数据
     * @return
     */
    //打出 /**然后回车形成如上所示的注释

    List<Dept> list();

    /**
     * 根据id删除部门
     * @param id
     */
    void delete(Integer id);

    /**
     * 插入部门数据
     * @param dept
     */
    void add(Dept dept);
}

service接口的实现类,需要加上@Service注解

@Service
public class DeptServiceImpl implements DeptService {

    @Autowired
    private DeptMapper deptMapper;

    @Override
    public List<Dept> list() {
        return deptMapper.list();
    }

    @Override
    public void delete(Integer id) {
        deptMapper.delete(id);
    }

    @Override
    public void add(Dept dept) {
        dept.setCreateTime(LocalDateTime.now());
        dept.setUpdateTime(LocalDateTime.now());

        deptMapper.add(dept);
    }
}

2.3 mapper层

数据访问层/持久层:存放mybatis的Mapper接口
SQL语句简单,使用注解开发,若涉及复杂的SQL语句,例如动态SQL那么在resources下创建与mapper层同包同名的.xml文件
.xml文件怎么写,动态SQL的标签等等之后补充…

@Mapper注解需要添加

@Mapper
public interface DeptMapper {
    /**
     * 查询全部部门数据
     * @return
     */
    //查询简单,所以基于注解开发
    @Select("select * from dept")
    List<Dept> list();

    /**
     * 根据id删除部门数据
     *
     * @param id
     */
    @Delete("delete from dept where id = #{id}")
    void delete(Integer id);

    /**
     * 插入部门数据
     *
     * @param dept
     */
    @Insert("INSERT INTO dept(name,create_time,update_time) values (#{name},#{createTime},#{updateTime})")
    void add(Dept dept);
}

3 开发规范

restful风格
统一响应结果 AjaxResult(自定义名称)

@Data    //lombok简化的getter setter
@NoArgsConstructor //无参构造
@AllArgsConstructor //全参构造
public class AjaxResult {
    private Integer code;//响应码,1 代表成功; 0 代表失败
    private String msg;  //响应信息 描述字符串
    private Object data; //返回的数据

    //增删改 成功响应
    public static AjaxResult success(){
        return new AjaxResult(1,"success",null);
    }
    //查询 成功响应
    public static AjaxResult success(Object data){
        return new AjaxResult(1,"success",data);
    }
    //失败响应
    public static AjaxResult error(String msg){
        return new AjaxResult(0,msg,null);
    }
}

4 开发流程

分析需求以及前端的页面原型

设计数据库表格

阅读接口文档

思路分析

接口开发(开发一个功能,一个功能被称为是一个接口)

postman接口测试

前后端联调

  • 22
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值