我们都学过spring 和springmvc框架,也感受到了这两个框架的“地狱配置”,对于新手程序猿来说,可能配置一个项目就要花一天的时间,而springBoot简化了这些配置,使用springBoot构建一个项目可能十多分钟就能构建好一个项目,对程序猿非常友好。
目标:构建的项目是springBoot + mybatis项目
springBoot流程梳理:
和springMVC是一样的,程序无非就是前端请求--》后端服务器--》数据库--》然后返回前端。springBoot也是进行前后端分离,共分为4层
1、dao层
2、pojo层
3、service层
4、controller层
1.1 IDEA新建一个项目
1.2 选择Spring Initializr --》选择对于的JDK版本--》 选择springBoot快速构建项目的地址(注:底层还是使用springBoot的官网构建项目,这里IDEA一键式的实现了这个功能)
1.3、使用IDEA集成spring官网可能连接不上,需要设置代理
setting--输入http搜索--HTTP Proxy --Auto... --Check connection--输入网址--点击ok
1.4 根据自己项目修改对于的组名,包名,项目名 ,选择项目类型为maven项目,包类型为jar包,选择和前面一样的JDK版本
1.5 这个页面配置的是SpringBoot项目相关的依赖,可以根据自己的项目来选择相关依赖
1.5.1 开发工具 建议大家选择SpringBoot DevTools 和Lombok
-- SpringBoot DevTools :实现项目的热部署
-- Lombok : SpringBoot 项目的核心,使用注解编程,可以让java变得简洁、快速
1.5.2 选择web工程相关依赖,选择第一个即可
1.5.3 模板引擎,大家如果使用了就选择对于的依赖,这个项目不使用,就不勾选了
1.5.4选择SQL---》选择对于的依赖,JDBC API,MYSQL Driver、mybatis Framework,前两个要连接数据库是必选的,mybatis Framework是这次使用mybatis框架实现连接数据库。
1.6 填写项目名,可默认不修改--》Finish,创建项目
1.7项目创建成功,选择enable Auto-Import 允许自动导入
1.8 我们可以在左侧查看项目结构,在右侧查看导入的依赖等等,如果没有爆红,正常来说就是没问题
1.9 可以选择删除没用的目录,也可以不删除
删除多余的之后的目录结构:
总体结构如下,注意每层都使用注解实现
2.1、dao层
-- 实现数据库操作
package com.duan.dao; import com.duan.pojo.Books; import org.apache.ibatis.annotations.Mapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import java.util.List; @Mapper #注解之后这个接口在编译时会生成相应的实现类 @Repository #用在持久层的接口上,这个注解是将接口的一个实现类交给spring管理。 public interface BookMapper { List<Books> queryBookById(int id); List<Books> queryAllBooks(); int addBook(Books book); int deleteBookById(int id); int updateBook(int id); }
dao层的mapper.xml文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.duan.dao.BookMapper"> <!--增加一个Book--> <insert id="addBook" parameterType="com.duan.pojo.Books"> insert into books (bookID,bookName,bookCount,detail) value(#{bookID}, #{bookName},#{bookCount},#{detail}) </insert> <!--根据id删除一个Book--> <delete id="deleteBookById" parameterType="int"> delete from books where bookID=#{bookID} </delete> <!--更新Book--> <update id="updateBook" parameterType="Books"> update books set bookName = #{bookName},bookCounts = #{bookCounts},detail = #{detail} where bookID = #{bookID} </update> <!--根据id查询,返回一个Book--> <select id="queryBookById" resultType="Books"> select * from books where bookID = #{bookID} </select> <select id="queryAllBooks" resultType="Books"> select * from mydatabase.books; </select> </mapper>在resource路径下新建一个dao层的mapper.xml文件,在配置文件中指向这个路径:mybatis.mapper-locations=classpath:mybatis/*.xml
2.2、pojo层
--业务类
package com.duan.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor public class Books { private int bookID; private String bookName; private String bookCount; private String detail; }
2.3、service层
-- 实现业务
接口
package com.duan.service; import com.duan.pojo.Books; import org.springframework.stereotype.Service; import java.util.List; public interface bookService { List<Books> queryBookById(int id); List<Books> queryAllBooks(); int addBook(Books book); int deleteBookById(int id); int updateBook(int id); }
实现类
package com.duan.service; import com.duan.dao.BookMapper; import com.duan.pojo.Books; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service #Service层的注解:将自动注册到Spring容器,不需要再在applicationContext.xml文件定义bean了 public class bookServiceImpl implements bookService { @Autowired(required = false) private BookMapper bookMapper; public void setBookMapper(BookMapper bookMapper){ this.bookMapper=bookMapper; } @Override public List<Books> queryBookById(int id) { return bookMapper.queryBookById( id); } @Override public List<Books> queryAllBooks() { return bookMapper.queryAllBooks(); } @Override public int addBook(Books book) { return bookMapper.addBook(book); } @Override public int deleteBookById(int id) { return bookMapper.deleteBookById(id); } @Override public int updateBook(int id) { return bookMapper.updateBook(id); } }4、controller层
-- 相当于servlet,处理前端请求,返回后端响应
package com.duan.contorller; import com.duan.pojo.Books; import com.duan.service.bookService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController #controller层注解:将自动注册到Spring容器,不需要再在applicationContext.xml文件定义bean了 public class BooksController { #自动装配 @Autowired @Qualifier("bookServiceImpl") #表明了哪个实现类才是我们所需要的 private bookService bookService; @GetMapping("/queryBook") public List<Books> queryBookById(){ List<Books> books =bookService.queryAllBooks(); return books; } }关键的配置文件
1、配置数据库连接信息
2、配mybatis的相关信息
3、spring相关的配置都是由注解实现了,不需程序猿手动配置了,真是太方便了
spring.datasource.username=root spring.datasource.password=123456 spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase?useSSL=true&useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver #整合mybatis mybatis.type-aliases-package=com.duan.pojo #指向mapper.xml文件的路径 mybatis.mapper-locations=classpath:mybatis/*.xml mybatis.configuration.log-impl=org.apache.ibatis.logging.log4j2.Log4j2Impl #mybatis.config-location=classpath:mybatis/*.xml运行springBoot的主方法类:
看到有spring的图标出现,并且没有报错,至此,我们的springboot项目就已经搭建好了
项目结构是这样的: