用SpringBoot来整合SSM,我们使用之前SSM用到的数据库user和实体类User
1.创建maven工程
2.编写基本代码
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cc.demo.user</groupId>
<artifactId>demo-user</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.7.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
引导类
package cc.demo.user;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* 启动类
*/
@SpringBootApplication
public class UserApplication {
public static void main(String[] args) {
SpringApplication.run(UserApplication.class,args);
}
}
UserController:
@RestController
@RequestMapping("user")
public class UserController {
@GetMapping("hello")
public String test(){
return "hello ssm";
}
}
测试
访问静态资源
把静态资源放在classpath:/static/目录下。我们创建目录,并且添加一些静态资源
在网页上访问
添加拦截器
首先我们定义一个拦截器
@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
MyInterceptor myInterceptor;
//注册拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(myInterceptor).addPathPatterns("/*");
}
}
总结:通过实现WebMvcConfigurer并添加@Configuration注解来实现自定义部分SpringMvc配置。
运行并查看日志
整合连接池
<!--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>
全局配置文件:application.properties
server.port=80
# 连接四大参数
spring.datasource.url=jdbc:mysql://localhost:3306/spr
spring.datasource.username=root
spring.datasource.password=root
# 可省略,SpringBoot自动推断
spring.datasource.driverClassName=com.mysql.jdbc.Driver
整合mybatis
添加依赖
<!--mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
mapper
给每一个Mapper接口添加@Mapper注解,才能被识别
@Mapper
public interface UserMapper {
}
使用通用mapper
添加依赖
<!-- 通用mapper -->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.0.2</version>
</dependency>
pojo类
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String userName;
private String password;
private String name;
private Integer age;
private Integer sex;
private Date birthday;
private Date created;
private Date updated;
//get,set方法
}
继承通用mapper,不要忘了操控的是那一个类
@Mapper
public interface UserMapper extends tk.mybatis.mapper.common.Mapper<User>{
}
关于通用mapper的使用和具体实现https://blog.csdn.net/illusory_germ/article/details/100145907
整合事务
在引入jdbc或者web的启动器,就已经引入事务相关的依赖及默认配置了
service
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List<User> queryList(){
return this.userMapper.selectAll();
}
//事务控制
@Transactional
public void delById(Long id){
this.userMapper.deleteByPrimaryKey(id);
int i=1/0;
}
public void add(User user){
this.userMapper.insertSelective(user);
}
}
启动测试
在controller中添加新的方法
@GetMapping("list")
@ResponseBody
public List<User> queryList(){
return this.userService.queryList();
}
@GetMapping("del")
public void delById(@RequestParam("id") Long id){
this.userService.delById(id);
}
@PostMapping("add")
public void add(User user){
user.setId(11L);
user.setName("两仪式");
user.setUserName("两仪式");
user.setPassword("123");
this.userService.add(user);
}
使用火狐浏览器访问,测试queryLis方法
测试delById方法
这里在service中定义了int i=1/0,分母不能为零,删除失败,数据库中的数据也没有删除,说明事物添加成功
注释掉int i=1/0,重新测试,测试成功
关于SpringBoot想要了解更多可以看这篇文章
https://blog.csdn.net/illusory_germ/article/details/100605075