一、SpringBoot的启动类
package cc.demo.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* springboot的启动类
* 1.需要一个入口方法 main方法
* 2.@SpringBootApplication
*/
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class,args);
}
}
二、 整合SpringMVC
2.1 修改tomcat启动端口
在全局配置文件下添加server.port设置启动端口。
2.2 访问静态资源
在源码中有一个叫做ResourceProperties的类,定义了静态资源的默认查找路径:
默认的静态资源路径为:
-
classpath:/META-INF/resources/
-
classpath:/resources/
-
classpath:/static/
-
classpath:/public/
2.3 添加拦截器
首先我们定义一个拦截器:
@Component
public class MyInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("preHandle method is running!");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("postHandle method is running!");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("afterCompletion method is running!");
}
}
然后定义配置类,注册拦截器:
@Configuration
public class MvcConfiguration implements WebMvcConfigurer {
@Autowired
private HandlerInterceptor myInterceptor;
/**
* 重写接口中的addInterceptors方法,添加自定义拦截器
* @param registry
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(myInterceptor).addPathPatterns("/**");
}
}
三、整合数据库连接池
在pom文件中引入jdbc的启动器
<!--jdbc的启动器,默认使用HikariCP连接池-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!--不要忘记数据库驱动,因为springboot不知道我们使用的什么数据库,这里选择mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
在全局配置文件中指定连接池参数
# 连接四大参数
spring.datasource.url=jdbc:mysql://localhost:3306/mm
spring.datasource.username=root
spring.datasource.password=root
# 可省略,SpringBoot自动推断
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.hikari.idle-timeout=60000
spring.datasource.hikari.maximum-pool-size=30
spring.datasource.hikari.minimum-idle=10
四、整合mybatis
4.1 mybatis
引入依赖
<!--mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
在全局配置文件中配置
# mybatis 别名扫描
mybatis.type-aliases-package=cc.demo.user.pojo
# mapper.xml文件位置,如果没有映射文件,请注释掉
mybatis.mapper-locations=classpath:mappers/*.xml
4.2 通用mapper
引入依赖
<!-- 通用mapper -->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.0.2</version>
</dependency>
新建mapper继承通用mapper类
@Mapper
public interface UserMapper extends tk.mybatis.mapper.common.Mapper<User>{
}
4.3 通用mapper定义pojo类
@Table(name = "food")
public class Food implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String foodname;
private Integer foodtypeId;
private Double price;
private Double mprice;
private String remark;
private String img;
以上为pojo定义属性,其中@Table指定与数据库中的哪个表关联
@Id指定主键
@GeneratedCalue指定了主键是自动生成
注:pojo类中属性名与数据表中列表默认对照关系:
如果列名为xx_xx ,则需定义属性名为xxXx 即将“_”去掉并将"_"后的第一个字母改为大写
如果列名为驼峰命名aaBbCc ,则定义属性名时 直接将属性名全部为小写即可
五、整合事务
在方法名上加上注解@Transactional:
@Transactional
public void delById(Integer id){
userMapper.deleteByPrimaryKey(id);
int i=1/0;
}
事务在遇到私有方法时会失效。
六、整合Thymeleaf模板引擎
引入启动器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
与解析JSP的InternalViewResolver类似,Thymeleaf也会根据前缀和后缀来确定模板文件的位置:
-
默认前缀:
classpath:/templates/
-
默认后缀:
.html
编写html模板,渲染模型中的数据:
注意,把html 的名称空间,改成:xmlns:th="http://www.thymeleaf.org"
会有语法提示
模板缓存
Thymeleaf会在第一次对模板解析之后进行缓存,极大的提高了并发处理能力。但是这给我们开发带来了不便,修改页面后并不会立刻看到效果,我们开发阶段可以关掉缓存使用:
# 开发阶段关闭thymeleaf的模板缓存
spring.thymeleaf.cache=false