栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot整合ssmp

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot整合ssmp

尝试基于spring + SpringBoot + MybatisPlus + axios + ElementUi实现的一个小小的系统,感兴趣可以来看看哦,一步一步的实现,详细步骤都有。

第一次尝试功能不太完整。

文章目录
  • 成果
    • 1、登录界面
    • 2、注册界面
    • 3、菜单
    • 4、水果信息表
  • SSMP整合↓
  • 一、导入依赖
  • 二、数据库创建
  • 三、实体类的创建
  • 三、DAO层
    • 1、配置信息
    • 2、编写接口
    • 3、功能测试
  • 四、Service层
    • 1、接口
    • 2、实现类
    • 3、功能测试
  • 五、Controller层
    • 1、创建Result类
    • 2、创建Code响应状态码
    • 3、controller

成果 1、登录界面

2、注册界面

3、菜单

4、水果信息表

SSMP整合↓ 一、导入依赖

        
            mysql
            mysql-connector-java
            runtime
        

        
            org.projectlombok
            lombok
            true
        

        
            com.baomidou
            mybatis-plus-boot-starter
            3.4.1
        

        
            com.alibaba
            druid-spring-boot-starter
            1.2.9
        
二、数据库创建

我只是简单的基于登录注册以及对一张表的增删除,所以就只创建了一个user表和一个fruits表,里面简单添加了一点数据,方便后面查询。

-- ----------------------------
-- Table structure for fruits
-- ----------------------------
DROP TABLE IF EXISTS `fruits`;
CREATE TABLE `fruits`  (
  `f_id` char(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `s_id` int NOT NULL,
  `f_name` char(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `f_price` decimal(8, 2) NOT NULL,
  `quantity` int NULL DEFAULT 1000,
  PRIMARY KEY (`f_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;

-- ----------------------------
-- Records of fruits
-- ----------------------------
INSERT INTO `fruits` VALUES ('002', 100, '苹果', 3.50, 975);
INSERT INTO `fruits` VALUES ('003', 100, '梨', 3.60, 1000);
INSERT INTO `fruits` VALUES ('004', 100, '香蕉', 3.60, 1000);
INSERT INTO `fruits` VALUES ('005', 100, '芒果', 5.00, 988);
INSERT INTO `fruits` VALUES ('1', 100, '香蕉', 3.50, 989);
INSERT INTO `fruits` VALUES ('10', 100, 'peanut', 3.50, 1000);
INSERT INTO `fruits` VALUES ('10a', 100, 'peanut', 3.50, 1000);
INSERT INTO `fruits` VALUES ('11', 107, 'pear', 3.60, 1000);
INSERT INTO `fruits` VALUES ('11a', 107, 'pear', 3.60, 1000);
INSERT INTO `fruits` VALUES ('12', 102, 'orange', 11.20, 1000);
INSERT INTO `fruits` VALUES ('12a', 102, 'orange', 11.20, 1000);
INSERT INTO `fruits` VALUES ('13', 105, 'melon', 8.20, 1000);
INSERT INTO `fruits` VALUES ('13a', 105, 'melon', 8.20, 1000);
INSERT INTO `fruits` VALUES ('14', 101, 'plum', 3.20, 1000);
INSERT INTO `fruits` VALUES ('14a', 101, 'plum', 3.20, 1000);
INSERT INTO `fruits` VALUES ('15', 104, 'lemon', 6.40, 1000);
INSERT INTO `fruits` VALUES ('15a', 104, 'lemon', 6.40, 1000);
INSERT INTO `fruits` VALUES ('16', 106, 'mango', 15.60, 1000);
INSERT INTO `fruits` VALUES ('16a', 106, 'mango', 15.60, 1000);
INSERT INTO `fruits` VALUES ('17', 105, 'watermelon', 2.60, 1000);
INSERT INTO `fruits` VALUES ('17a', 105, 'watermelon', 2.60, 1000);
INSERT INTO `fruits` VALUES ('18', 105, 'cherry', 11.60, 1000);
INSERT INTO `fruits` VALUES ('18a', 105, 'cherry', 11.60, 1000);
INSERT INTO `fruits` VALUES ('19', 103, 'coconut', 9.20, 1000);
INSERT INTO `fruits` VALUES ('19a', 103, 'coconut', 9.20, 1000);

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `username` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `password` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE INDEX `username`(`username`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 76 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;

三、实体类的创建
@Data
public class User {
    private Integer id;
    private String username;
    private String password;
}
@Data
public class Fruits {
    @TableId(value = "f_id", type = IdType.ASSIGN_UUID)
    private String fId;
    private Integer sId;
    private String fName;
    private Float fPrice;
    private Integer quantity;
}
三、DAO层 1、配置信息
# 数据库连接信息
spring:
  datasource:
    druid:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/fruits
      username: root
      password: 1234
      
mybatis-plus:
  configuration:
    #mp日志
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
2、编写接口
@Mapper
public interface UserDao extends BaseMapper {
}
@Mapper
public interface FruitsDao extends BaseMapper {
}
3、功能测试
@SpringBootTest
public class DaoTest {

    @Autowired
    private UserDao userDao;
    @Autowired
    private FruitsDao fruitsDao;

    @Test
    public void test01(){
        userDao.selectList(null);
    }

    @Test
    public void test02(){
        fruitsDao.selectList(null);
    }
}

只要表里面的数据能过查询出来,接口基本都没有问题

四、Service层 1、接口
public interface UserService extends IService {
}
public interface FruitsService extends IService {
}
2、实现类
@Service
public class UserServiceImpl extends ServiceImpl implements UserService {
}
@Service
public class FruitsServiceImpl extends ServiceImpl implements FruitsService {
}
3、功能测试
@SpringBootTest
public class ServiceTest {

    @Autowired
    private UserService userService;
    @Autowired
    private FruitsService fruitsService;

    @Test
    public void test01(){
        userService.list();
    }

    @Test
    public void test02(){
        fruitsService.list();
    }
}

同样,能够查询出数据就基本没错了。

五、Controller层 1、创建Result类
@Data
public class Result {
//    响应状态码
    private Integer code;
//    响应数据
    private Object data;
//    响应信息
    private String msg;
    
    public Result() {
    }

    public Result(Object data) {
        this.data = data;
    }

    public Result(Integer code, Object data) {
        this.data = data;
        this.code = code;
    }

    public Result(Integer code, Object data,  String msg) {
        this.data = data;
        this.code = code;
        this.msg = msg;
    }
}
2、创建Code响应状态码
public class Code {
    public static final Integer INSERT_OK = 20011;//添加成功
    public static final Integer DELETE_OK = 20021;//删除成功
    public static final Integer UPDATE_OK = 20031;//修改成功
    public static final Integer SELECT_OK = 20041;//查询成功

    public static final Integer INSERT_ERR = 20010;//添加失败
    public static final Integer DELETE_ERR = 20020;//删除失败
    public static final Integer UPDATE_ERR = 20030;//修改失败
    public static final Integer SELECT_ERR = 20040;//查询失败

    public static final Integer OTHER_ERR = 40001;//其它异常
    public static final Integer SYSTEM_ERR = 50001;//系统异常
    public static final Integer BUSINESS_ERR = 60001;//业务异常
}
3、controller
@RestController
@RequestMapping("/users")
public class UserController {

    @Autowired
    private UserService userService;

    
    @PostMapping()
    public Result insertUser(@RequestBody User user) {
        boolean save = userService.save(user);
        return new Result(save ? Code.INSERT_OK:Code.INSERT_ERR,save);
    }

    
    @PostMapping(value = "/select")
    public Result selectUser(@RequestBody User user){
        QueryWrapper qw = new QueryWrapper<>(user);
        List list = userService.list(qw);
        Integer code = list.size()>0  ? Code.SELECT_OK:Code.SELECT_ERR;
        String msg = list.size()>0 ? "":"查询失败,请重试!";
        return new  Result(code,null,msg);
    }

    
    @GetMapping
    public Result getAllUser(){
        List users = userService.list();
        Integer code = users.isEmpty() ? Code.SELECT_ERR : Code.SELECT_OK;
        String msg = users.isEmpty() ? "查询失败,请重试!!!" : "";
        return new Result(code,users,msg);
    }
}

@RestController
@RequestMapping("/fruits")
public class FruitsController {
    @Autowired
    private FruitsService fruitsService;

    
    @GetMapping
    public Result selectAllFruits() {
        List fruits = fruitsService.list();
        Integer code = fruits != null ? Code.SELECT_OK:Code.SELECT_ERR;
        String msg = fruits != null ? "":"查询失败,请重试!";
        return new Result(code,fruits,msg);
    }

    
    @PostMapping
    public Result insertFruits(@RequestBody Fruits fruits) {
        boolean flag =fruitsService.save(fruits);
        return new Result(flag ? Code.INSERT_OK:Code.INSERT_ERR,flag);
    }

    
    @DeleteMapping("/{fid}/{sid}")
    public Result deleteFruits(@PathVariable String fid, @PathVariable Integer sid) {
        LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>();
        wrapper.eq(Fruits::getFId,fid).eq(Fruits::getSId,sid);
        boolean flag =fruitsService.remove(wrapper);
        return new Result(flag ? Code.INSERT_OK:Code.INSERT_ERR,flag);
    }

    
    @PutMapping
    public Result updateFruits(@RequestBody Fruits fruits) {
        LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>();
        wrapper.eq(Fruits::getFId,fruits.getFId()).eq(Fruits::getSId,fruits.getSId()).
                set(Fruits::getFName,fruits.getFName()).set(Fruits::getFPrice,fruits.getFPrice()).
                set(Fruits::getQuantity,fruits.getQuantity());
        boolean flag =fruitsService.update(wrapper);
        return new Result(flag ? Code.UPDATE_OK:Code.UPDATE_ERR,flag);
    }


    
    @GetMapping("/{fid}")
    public Result selectFruits(@PathVariable String fid) {
        Fruits fruits = fruitsService.getById(fid);
        Integer code = fruits != null ? Code.SELECT_OK:Code.SELECT_ERR;
        String msg = fruits != null ? "":"查询失败,请重试!";
        return new Result(code,fruits,msg);
    }

    
    @PostMapping("/search")
    public Result selectByInput(@RequestBody Fruits fruits){
        LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(StringUtils.isNotBlank(fruits.getFId()),Fruits::getFId,fruits.getFId())
                .eq(fruits.getSId()!=null,Fruits::getSId,fruits.getSId())
                .eq(StringUtils.isNotBlank(fruits.getFName()),Fruits::getFName,fruits.getFName())
                .le(fruits.getFPrice()!=null,Fruits::getFPrice,fruits.getFPrice());
        List list = fruitsService.list(wrapper);
        Integer code = list != null ? Code.SELECT_OK:Code.SELECT_ERR;
        String msg = list != null ? "":"查询失败,请重试!";
        return new Result(code,list,msg);
    }
}

前端代码不好贴,私信我可以拿哦~~~

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/877256.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号