目录
1.关于springBoot的说明
1.1 springBoot的定义
1.2 springBoot的作用
2. 关于springMVC的说明
2.1 springMVC的作用
3. Spring的的作用
4.mybatis的作用
一、创建项目的目录
二、pom文件引入jar包
三、配置yml文件,配置数据源及端口
四、创建pojo类
五、创建启动类用来启动服务
六、创建service接口
七、创建service的实现类
八、创建UserMapper.xml
九、创建mapper接口
十、创建UserController
十一、创建页面
十二. 页面结果
十三.关于springboot+SSM整合的说明
Spring Boot是伴随着Spring4.0共同诞生的,它的目的就是简化spring的配置及开发,并协助开发人员可以整体管理应用程序的配置而不再像以前那样需要做大量的配置工作,它提供了很多开发组件,并且内嵌了web应用容器,如tomcat和Jetty等。其目的便是使我们的开发变得简化并且能大幅度提高开发人员的开发效率,为了简化Spring功能的配置我们可以引入或启动我们需要的Spring功能。这样做的好处就是避免开发人员过多的对框架的关注,而把更多的精力与时间放在系统的业务逻辑代码中。
Spring Boot框架,其功能非常简单,便是帮助我们实现自动配置。我们都知道Spring Boot框架的核心是自动配置。只要有相应的jar包,Spring就会帮助我们实现自动配置,而无需像以前我们使用spring框架一样要做很多配置。当默认配置不能满足我们要求的时候,我们能够用自己的配置来替换这些自动的配置类。此外,上面我们也提到Spring Boot内嵌了web应用容器,除此之外还集成了系统监控等功能,这些都可以帮助我们快速搭建企业级的应用程序并使用。
springMVC是基于MVC设计模式实现的一款优秀框架。现在基于SSM框架的应用越来越广泛,分层来达到代码的解耦,以提高代码的复用性以及降低代码的耦合,便于后期的维护和问题的定位。
spring我们在SSM的整合时主要用来解决业务层Service,一般用来处理业务的逻辑,处理完业务后会调用mpper(mybatis层的接口),进入mybatis层。例如:
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public List getAll() {
return userMapper.selectList(null);
}
@Override
public void deleteByID(Integer id) {
userMapper.deleteByID(id);
}
@Override
public void updateByID(User user) {
System.out.println(user);
userMapper.updateByID(user);
}
}
我们做项目时,一般用mybatis来与数据库交互,用于数据的增删改查。我们一般通过spring的DI注入将mapper注入到spring层,我们仅仅只是在spring层调用mpper的接口,然后通过mpper.xml来匹配对应的增删改查操作。例如:
id,name,age,sex
delete from demo_user
id=#{id}
update demo_user
id=#{id},
name=#{name},
age=#{age},
sex=#{sex},
id=#{id}
通过mapper的namespace 来扫描到对应的接口,然后方法名匹配具体的id 如:
id="updateByID"来匹配具体的增删改查操作。
下面我们通过具体的操作来整合springBoot+SSM
4.0.0
com.jt
springboot_demo4_MVC
1.0-SNAPSHOT
org.springframework.boot
spring-boot-starter-parent
2.5.2
1.8
true
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-devtools
org.projectlombok
lombok
mysql
mysql-connector-java
runtime
mysql
mysql-connector-java
8.0.25
com.baomidou
mybatis-plus-boot-starter
3.4.3.1
org.projectlombok
lombok
org.springframework.boot
spring-boot-maven-plugin
2.5.2
注意:由于我这里用的是mybatis-plus 所以引入的是mybatis-plus的jar包 ,由于它是mybatis的增强版 不影响mybatis的原有功能,大家可以用MP的jar包,也可以换成标准的mybatis的jar包。
server:
port: 8090
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/jt?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
username: root
password: root
#如果数据库密码以数字0开头 则必须使用""号包裹
#password: "01234"
thymeleaf:
#设置页面前缀
prefix: classpath:/webDemo/
#设置页面后缀
suffix: .html
#是否使用缓存
cache: false
#SpringBoot整合Mybatis配置
mybatis-plus:
type-aliases-package: com.jt.pojo
mapper-locations: classpath:/mybatis/*.xml
configuration:
map-underscore-to-camel-case: true
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#Mapper 接口执行 打印sql语句
logging:
level:
com.jt.mapper: debug
由于我这里的8080端口被占用,所以修改了端口号
package com.jt.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
@Data
@Accessors(chain = true)
@TableName("demo_user")
public class User implements Serializable {
@TableId(type = IdType.AUTO)
private Integer id;
private String name;
private Integer age;
private String sex;
}
package com.jt;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.jt.mapper")
public class RunApp {
public static void main(String[] args) {
SpringApplication.run(RunApp.class, args);
}
}
package com.jt.service;
import com.jt.pojo.User;
import java.util.List;
public interface UserService {
List getAll();
void deleteByID(Integer id);
void updateByID(User user);
}
package com.jt.service;
import com.jt.mapper.UserMapper;
import com.jt.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public List getAll() {
return userMapper.selectList(null);
}
@Override
public void deleteByID(Integer id) {
userMapper.deleteByID(id);
}
@Override
public void updateByID(User user) {
System.out.println(user);
userMapper.updateByID(user);
}
}
id,name,age,sex
delete from demo_user
id=#{id}
update demo_user
id=#{id},
name=#{name},
age=#{age},
sex=#{sex},
id=#{id}
package com.jt.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jt.pojo.User;
public interface UserMapper extends BaseMapper {
void deleteByID(Integer id);
void updateByID(User user);
}
package com.jt.controller;
import com.jt.pojo.User;
import com.jt.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@CrossOrigin
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/getAll")
public List getAll(){
return userService.getAll();
}
@RequestMapping("/deleteByID")
public void deleteByID(Integer id){
userService.deleteByID(id);
}
@RequestMapping("/updateByID")
public void updateByID(User user){
System.out.println(user);
userService.updateByID(user);
}
}
用户的列表demo
用户的列表
编号
姓名
年龄
性别
操作
$(function(){
var url = "http://localhost:8090/getAll"
$.get(url,function(data){
for(var user of data){
var tr=`
${user.id}
${user.name}
${user.age}
${user.sex}
`
$("#tab").append(tr)
}
})
})
function deleteByID(id){
$.ajax({
type:"get",
url:"http://localhost:8090/deleteByID",
data:{id:id},
success:function(data){
alert("删除成功");
},
error:function(data){
alert("删除失败或者数据不存在")
}
})
}
function updateByID(id){
location.href="update.html"
$.ajax({
type:"get",
url:"http://localhost:8090/updateByID",
data:{id:id},
success:function(data){
alert("修改成功");
},
error:function(data){
alert("修改失败")
}
})
}
新手在入门springboot+SSM时,难点在于不知道如何将这几个框架的流程走通,也不知道如何将业务以怎样的逻辑结构呈现出来.所以给大家写了一个入门案例.从前端的请求到后端的响应,再到结果的返回.
我们首先要明白,当页面发起请求时,已经规定好了访问的形式如:
url当中getAll规定了访问的方法(controller当中的方法),然后通过层层调用 到mybatis持久化数据,最后再将数据层层返回,最后渲染返回给页面.