Quellcode durchsuchen

实现了多表联查,CertificateID辅助验证登录

wangkun vor 1 Jahr
Ursprung
Commit
9629324c48

+ 8 - 3
pom.xml

@@ -22,9 +22,9 @@
             <artifactId>spring-boot-starter-web</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.mybatis.spring.boot</groupId>
-            <artifactId>mybatis-spring-boot-starter</artifactId>
-            <version>2.2.2</version>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.5.7</version>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
@@ -41,6 +41,11 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-jdbc</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-maven-plugin</artifactId>
+            <version>3.3.4</version>
+        </dependency>
         <dependency>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>

+ 93 - 0
src/main/java/com/bcn/login_mybatis_demo/controller/GoodsController.java

@@ -0,0 +1,93 @@
+package com.bcn.login_mybatis_demo.controller;
+
+import com.bcn.login_mybatis_demo.pojo.Goods;
+import com.bcn.login_mybatis_demo.service.GoodsService;
+import com.bcn.login_mybatis_demo.util.Result;
+import com.bcn.login_mybatis_demo.util.ResultCode;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/api/goods")
+public class GoodsController {
+
+    @Autowired
+    private GoodsService goodsService;
+    //获取全部商品
+    @GetMapping("/getAllGoods")
+    public Result getAllGoods() {
+        List<Goods> goodsList = goodsService.getAllGoods();
+        System.out.println("goodsList:"+goodsList);
+        if (goodsList != null && !goodsList.isEmpty()) {
+            return new Result(200, "查询成功", goodsList); // 成功返回
+        } else {
+            return new Result(404, "未找到商品", null); // 未找到商品时返回
+        }
+    }
+    //获取单个商品
+    @RequestMapping("/{id}")
+    public Result getGoodsById(@PathVariable int id) {
+        Goods goods = goodsService.getGoodsById(id);
+        if (goods != null) {
+            return  new Result(200,"获取成功",goods);
+        }
+        else {
+            return new Result(404,"未找到商品",null);
+        }
+    }
+
+    //添加新商品
+    @PostMapping("/add")
+    public Result addGoods(@RequestBody Goods goods) {
+        if (goods.getGoodsname().isEmpty()||goods.getId()==null||goods.getPrice()==null||
+                goods.getInventory()==null) {
+            Result<Goods> result = new Result<>(404, "商品添加失败", goods);
+            System.out.println(result); // 打印成功的 Result 对象
+            return result;
+        }else {
+            goodsService.addGoods(goods);
+            Result<Goods> result = new Result<>(200, "商品添加成功", goods);
+            System.out.println(result); // 打印成功的 Result 对象
+            return result;
+        }
+
+    }
+    //更新商品
+    @PutMapping("/update/{id}")
+    public Result updateGoods(@RequestBody Goods goods) {
+        if (goods.getGoodsname().isEmpty()||goods.getId()==null||goods.getPrice()==null||goods.getInventory()==null) {
+            Result<Goods> result = new Result<>(404, "商品更新失败", goods);
+            System.out.println(result); // 打印成功的 Result 对象
+            return result;
+        }else {
+            goodsService.updateGoods(goods);
+            Result<Goods> result = new Result<>(200, "商品更新成功", goods);
+            System.out.println(result); // 打印成功的 Result 对象
+            return result;
+        }
+    }
+
+    //删除商品
+    @DeleteMapping("/delete/{id}")
+    public String deleteGoods(@PathVariable int id) {
+
+            goodsService.deleteGoods(id);
+
+
+        return "调用了删除";
+    }
+    //查询商品--精准查询
+    //@GetMapping("/searchbyname")
+    //public List<Goods> searchGoods(@RequestParam String name) {
+    //    return goodsService.findGoodsByName(name);
+    //}
+
+    //查询商品--模糊查询
+    @GetMapping("/search")
+    public Result<List<Goods>> searchGoods(@RequestParam String keyword) {
+        List<Goods> goodsList = goodsService.searchGoodsByKeyword(keyword);
+        return new Result<>(200,"查询成功",goodsList);
+    }
+}

+ 12 - 2
src/main/java/com/bcn/login_mybatis_demo/controller/UserController.java

@@ -8,6 +8,8 @@ import com.bcn.login_mybatis_demo.util.ResultUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
+
 /**
  * @author 大白菜
  * @date Created in 2022/9/26 14:56
@@ -15,7 +17,7 @@ import org.springframework.web.bind.annotation.*;
 @SuppressWarnings({"all"})
 @RestController
 @RequestMapping("/user")
-@CrossOrigin(origins = "http://localhost:5173", allowCredentials = "true")
+@CrossOrigin
 public class UserController {
     @Autowired
     UserServiceImpl userServiceImpl;
@@ -24,7 +26,8 @@ public class UserController {
     public Result login(@RequestBody LoginRequest loginRequest) {
         String username = loginRequest.getUsername();
         String password = loginRequest.getPassword();
-        String msg = userServiceImpl.loginService(username, password);
+        String certificateID = loginRequest.getCertificateID();
+        String msg = userServiceImpl.loginService(username, password,certificateID);
         if(("SUCCESS").equals(msg)){
             return ResultUtil.success("登录成功");
         }else{
@@ -42,4 +45,11 @@ public class UserController {
         }
     }
 
+    @RequestMapping("/getAllUser")
+    public List<User> getAllUser() {
+
+            return userServiceImpl.getAllUserService();
+
+    }
+
 }

+ 41 - 0
src/main/java/com/bcn/login_mybatis_demo/mapper/GoodsMapper.java

@@ -0,0 +1,41 @@
+package com.bcn.login_mybatis_demo.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.bcn.login_mybatis_demo.pojo.Goods;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import java.util.Optional;
+
+/**
+* @author Administrator
+* @description 针对表【goods】的数据库操作Mapper
+* @createDate 2024-10-31 10:30:51
+* @Entity .domain.com.bcn.login_mybatis_demo.pojo.Goods
+*/
+@Mapper
+@Repository
+public interface GoodsMapper extends BaseMapper<Goods>  {
+
+    List<Goods> selectAllGoods();
+    List<Goods> selectGoodsByname(String username);
+
+    Goods selectGoodsByid(int id);
+
+    default List<Goods> searchGoodsByKeyword(String keyword) {
+        QueryWrapper<Goods> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().like(Goods::getGoodsname, keyword)
+                .or().like(Goods::getDescription, keyword)
+                .or().like(Goods::getInventory, keyword)
+                .or().like(Goods::getPrice, keyword)
+                .or().like(Goods::getId, keyword);
+        return selectList(queryWrapper);
+    }
+}
+
+
+
+

+ 12 - 1
src/main/java/com/bcn/login_mybatis_demo/mapper/UserMapper.java

@@ -1,19 +1,30 @@
 package com.bcn.login_mybatis_demo.mapper;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.bcn.login_mybatis_demo.pojo.User;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * @author 大白菜
  * @date Created in 2022/9/26 14:56
  */
 @Mapper
 @Repository
-public interface UserMapper {
+public interface UserMapper extends BaseMapper<User> {
     User selectUserByUsername(String username);
 
     String selectPasswordByUsername(String username);
 
     void insertUser(User user);
+
+    List<User> selectAllUser();
+
+    User findUserByCertificate(@Param("username")String username,
+                               @Param("password")String password,
+                               @Param("certificateID")String certificateID);
 }

+ 15 - 0
src/main/java/com/bcn/login_mybatis_demo/pojo/Certificate.java

@@ -0,0 +1,15 @@
+package com.bcn.login_mybatis_demo.pojo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+@Setter
+@Getter
+public class Certificate {
+    private String Certificate_ID;
+    private String Certificate_owner;
+    private Date Certificate_deadline;
+
+}

+ 32 - 0
src/main/java/com/bcn/login_mybatis_demo/pojo/Goods.java

@@ -0,0 +1,32 @@
+package com.bcn.login_mybatis_demo.pojo;
+
+
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ *
+ *
+ */
+
+
+@Setter
+@Getter
+
+@Data
+@TableName("goods")
+public class Goods implements Serializable {
+    @TableId
+    private Integer id;
+    private String goodsname;
+    private BigDecimal price;
+    private Integer inventory;
+    private String description;
+}

+ 5 - 1
src/main/java/com/bcn/login_mybatis_demo/pojo/LoginRequest.java

@@ -9,9 +9,13 @@ public class LoginRequest {
 
     private String username;
     private String password;
-    public LoginRequest(String username, String password) {
+    private String certificateID;
+
+    public LoginRequest(String username, String password,String certificateID) {
         this.username = username;
         this.password = password;
+        this.certificateID = certificateID;
+
     }
 
 }

+ 6 - 8
src/main/java/com/bcn/login_mybatis_demo/pojo/User.java

@@ -1,8 +1,6 @@
 package com.bcn.login_mybatis_demo.pojo;
 
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
+import lombok.*;
 
 /**
  * @author 大白菜
@@ -11,15 +9,15 @@ import lombok.NoArgsConstructor;
 @Data
 @AllArgsConstructor
 @NoArgsConstructor
+@Getter
+@Setter
 public class User {
     public Integer id;
     public String name;
     public String username;
     private String password;
+    private String Certificate_ID;
+    private Certificate certificate;
+
 
-    public User(String name, String username, String password) {
-        this.name = name;
-        this.username = username;
-        this.password = password;
-    }
 }

+ 34 - 0
src/main/java/com/bcn/login_mybatis_demo/service/GoodsService.java

@@ -0,0 +1,34 @@
+package com.bcn.login_mybatis_demo.service;
+
+
+import com.bcn.login_mybatis_demo.pojo.Goods;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+
+import java.util.List;
+import java.util.Optional;
+
+/**
+* @author Administrator
+* @description 针对表【goods】的数据库操作Service
+* @createDate 2024-10-31 10:30:51
+*/
+public interface GoodsService  {
+
+
+
+    List<Goods> getAllGoods();
+
+    Goods getGoodsById(int id);
+
+    boolean addGoods(Goods goods);
+
+
+    void deleteGoods(int id);
+
+    boolean updateGoods(Goods goods);
+
+    List<Goods> findGoodsByName(String name);
+
+    List<Goods> searchGoodsByKeyword(String keyword);
+}

+ 4 - 1
src/main/java/com/bcn/login_mybatis_demo/service/UserSerivce.java

@@ -2,14 +2,17 @@ package com.bcn.login_mybatis_demo.service;
 
 import com.bcn.login_mybatis_demo.pojo.User;
 
+import java.util.List;
+
 /**
  * @author 大白菜
  * @date Created in 2022/9/26 14:56
  */
 public interface UserSerivce {
 
-    String loginService(String username, String password);
+    String loginService(String username, String password,String certificateID);
 
     String registerService(User user);
 
+    List<User> getAllUserService();
 }

+ 67 - 0
src/main/java/com/bcn/login_mybatis_demo/service/serviceImpl/GoodsServiceImpl.java

@@ -0,0 +1,67 @@
+package com.bcn.login_mybatis_demo.service.serviceImpl;
+
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.bcn.login_mybatis_demo.mapper.GoodsMapper;
+import com.bcn.login_mybatis_demo.pojo.Goods;
+import com.bcn.login_mybatis_demo.service.GoodsService;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+import static com.baomidou.mybatisplus.extension.toolkit.Db.list;
+
+/**
+* @author Administrator
+* @description 针对表【goods】的数据库操作Service实现
+* @createDate 2024-10-31 10:30:51
+*/
+@Service
+@Transactional
+public class GoodsServiceImpl implements GoodsService {
+
+    @Autowired
+    private GoodsMapper goodsMapper;
+    @Override
+    public List<Goods> getAllGoods() {
+        return goodsMapper.selectAllGoods();
+    }
+
+    @Override
+    public Goods getGoodsById(int id) {
+        return goodsMapper.selectGoodsByid(id);
+    }
+
+    @Override
+    public boolean addGoods(Goods goods) {
+        return goodsMapper.insert(goods) > 0;
+    }
+
+    @Override
+    public void deleteGoods(int id) {
+        goodsMapper.deleteById(id);
+    }
+
+    @Override
+    public boolean updateGoods(Goods goods) {
+        return goodsMapper.updateById(goods) > 0;
+    }
+
+    @Override
+    public List<Goods> findGoodsByName(String goodsName) {
+       return goodsMapper.selectGoodsByname(goodsName);
+    }
+
+    @Override
+    public List<Goods> searchGoodsByKeyword(String keyword) {
+        return goodsMapper.searchGoodsByKeyword(keyword);
+    }
+}
+
+
+
+

+ 17 - 16
src/main/java/com/bcn/login_mybatis_demo/service/serviceImpl/UserServiceImpl.java

@@ -1,11 +1,14 @@
 package com.bcn.login_mybatis_demo.service.serviceImpl;
 
 import com.bcn.login_mybatis_demo.mapper.UserMapper;
+import com.bcn.login_mybatis_demo.pojo.Certificate;
 import com.bcn.login_mybatis_demo.pojo.User;
 import com.bcn.login_mybatis_demo.service.UserSerivce;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * @author 大白菜
  * @date Created in 2022/9/26 14:56
@@ -16,24 +19,17 @@ public class UserServiceImpl implements UserSerivce {
     UserMapper userMapper;
 
     @Override
-    public String loginService(String username, String password) {
-        System.out.println(username);
-        System.out.println("调用了这个方法");
-        User user = userMapper.selectUserByUsername(username);
-        System.out.println(user);
-        if (user!=null){
-            String userEpwd= user.getPassword();
-            System.out.println("数据库中的密码是: " + userEpwd);
-            if(password.equals(userEpwd)){
-                return "SUCCESS";
-            }else{
-                return "密码错误";
-            }
-        }
-        return "账号错误";
-    }
+    public String loginService(String username, String password,String certificateID) {
+        User user1 = userMapper.findUserByCertificate(username,password, certificateID);
+        System.out.println("user1:"+user1);
+if (user1 != null) {
+    return "登录成功";
+}else {
+    return "用户名或密码错误";
+}
 
 
+    }
     @Override
     public String registerService(User user) {
         User userE=userMapper.selectUserByUsername(user.getUsername());
@@ -51,4 +47,9 @@ public class UserServiceImpl implements UserSerivce {
         }
     }
 
+    @Override
+    public List<User> getAllUserService() {
+        return userMapper.selectAllUser();
+    }
+
 }

+ 23 - 0
src/main/java/com/bcn/login_mybatis_demo/util/WebConfig.java

@@ -0,0 +1,23 @@
+package com.bcn.login_mybatis_demo.util;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+public class WebConfig {
+
+    @Bean
+    public WebMvcConfigurer corsConfigurer() {
+        return new WebMvcConfigurer() {
+            @Override
+            public void addCorsMappings(CorsRegistry registry) {
+                registry.addMapping("/**") // 允许所有路径
+                        .allowedOrigins("http://localhost:5173") // 前端地址,允许特定来源
+                        .allowedMethods("GET", "POST", "PUT", "DELETE") // 允许的请求方法
+                        .allowedHeaders("*") // 允许的请求头
+                        .allowCredentials(true); // 是否允许发送Cookie信息
+            }
+        };
+    }
+}

+ 6 - 1
src/main/resources/application.yml

@@ -18,6 +18,11 @@ mybatis:
 # Show sql
 logging:
   level:
+    org:
+      apache:
+        ibatis:
+          DEBUG  # 这将打印 MyBatis 的所有调试信息,包括 SQL 语句和参数
     com:
       example:
-        mapper : debug
+        mapper:
+          DEBUG  # 这将特别打印 com.example.mapper 包下的调试信息(如果 MyBatis 没有直接打印,这个设置可能有助于捕获更多信息,但通常不是必需的,因为 MyBatis 会自己打印 SQL)

+ 37 - 0
src/main/resources/mapper/GoodsMapper.xml

@@ -0,0 +1,37 @@
+<?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.bcn.login_mybatis_demo.mapper.GoodsMapper">
+
+    <resultMap id="BaseResultMap" type="com.bcn.login_mybatis_demo.pojo.Goods">
+            <id property="id" column="id" jdbcType="INTEGER"/>
+            <result property="goodsname" column="goodsname" jdbcType="VARCHAR"/>
+            <result property="inventory" column="inventory" jdbcType="INTEGER"/>
+            <result property="price" column="price" jdbcType="DECIMAL"/>
+            <result property="description" column="description" jdbcType="VARCHAR"/>
+
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,goodsname,inventory,
+        price,description
+    </sql>
+
+    <select id="selectGoodsByname" resultType="com.bcn.login_mybatis_demo.pojo.Goods">
+        select *
+        from  goods
+        where goodsname = #{name}
+    </select>
+    <select id="selectAllGoods" resultMap="BaseResultMap">
+        select *
+        from goods
+    </select>
+    <select id="selectGoodsByid"  resultType="com.bcn.login_mybatis_demo.pojo.Goods">
+        select *
+        from goods
+        where id = #{id}
+    </select>
+
+
+</mapper>

+ 41 - 3
src/main/resources/mapper/UserMapper.xml

@@ -3,17 +3,49 @@
         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.bcn.login_mybatis_demo.mapper.UserMapper">
+    <resultMap id="UserMap" type="com.bcn.login_mybatis_demo.pojo.User">
+        <id property="id" column="userId"/>
+        <result property="name" column="name"/>
+        <result property="username" column="userName"/>
+        <result property="password" column="passWord"/>
+        <result property="certificate_ID" column="certificate_ID"/>
+    </resultMap>
+    <resultMap id="UserCertMap" type="com.bcn.login_mybatis_demo.pojo.User">
+        <id property="id" column="userId"/>
+        <result property="name" column="name"/>
+        <result property="username" column="userName"/>
+        <result property="password" column="passWord"/>
+        <result property="certificate_ID" column="certificate_ID"/>
+        <!-- Certificate association, if Certificate is a nested object in User -->
+        <association property="certificate" javaType="com.bcn.login_mybatis_demo.pojo.Certificate">
+            <id property="certificate_ID" column="certificate_ID"/>
+            <result property="certificate_owner" column="certificate_owner"/>
+            <result property="certificate_deadline" column="certificate_deadline"/>
+        </association>
+    </resultMap>
 
     <insert id="insertUser">
-        insert into user
-        values (null, #{name}, #{username}, #{password})
+        insert into user (name, username, password)
+        values (#{name}, #{username}, #{password})
     </insert>
 
-    <select id="selectUserByUsername" resultType="com.bcn.login_mybatis_demo.pojo.User">
+    <select id="selectUserByUsername" resultMap="UserMap">
         select *
         from user
         where username = #{username}
     </select>
+    <select id="selectCertificateByID" resultType="com.bcn.login_mybatis_demo.pojo.Certificate">
+        select *
+        from certificate
+        where Certificate_ID = #{certificateID}
+    </select>
+
+    <select id="findUserByCertificate"  resultMap="UserCertMap">
+        SELECT user.*, certificate.*
+        FROM user
+                 LEFT JOIN certificate ON user.certificate_ID = certificate.certificate_ID
+        WHERE user.username=#{username} AND user.password=#{password} AND  certificate.certificate_ID=#{certificateID}
+    </select>
 
     <select id="selectPasswordByUsername" resultType="java.lang.String">
         select password
@@ -21,4 +53,10 @@
         where username = #{username}
     </select>
 
+    <select id="selectAllUser" resultType="com.bcn.login_mybatis_demo.pojo.User">
+        select *
+        from user
+        where 1=1
+    </select>
+
 </mapper>