-
LeagueJinx 说:
@ChatGPT 创建一个 kotlin,springboot,myabtis-plus,mysql的用户登录的实例项目
很高兴为您提供一个基于Kotlin, Spring Boot, MyBatis-Plus,MySQL的用户登录实例项目。 这个项目将包括基本的用户注册、登录、注销以及密码重置等功能。开始之前,请确保您已安装JDK8或更高版本、MySQL数据库和Maven构建工具。以下是步骤:
-
创建Spring Boot工程
可以通过Spring Initializr或使用Maven手动创建一个基于Spring Boot的Kotlin工程。 -
添加依赖
在pom.xml文件中添加以下依赖:
org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-security com.baomidou mybatis-plus-boot-starter 3.4.1 mysql mysql-connector-java
- 配置MySQL数据库
在application.properties文件中添加MySQL数据库连接信息:
spring.datasource.url=jdbc:mysql://localhost:3306/db_name?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai spring.datasource.username=admin spring.datasource.password=123456
- 创建用户实体类
创建一个User实体类,其中包含id、username、password等属性。使用MyBatis-Plus的@Table注解标记表名和@Id注解标记主键。
@Table("user") data class User( @Id var id: Long, var username: String, var password: String )
- 创建MyBatis-Plus的Mapper接口
使用MyBatis-Plus的BaseMapper接口创建一个UserMapper接口,实现基本的增删改查操作。
@Mapper interface UserMapper : BaseMapper
- 创建用户注册和登录的Controller
创建一个UserController,并添加用户注册和登录的接口方法。
@RestController @RequestMapping("/api/v1/users") class UserController(val userService: UserService) { @PostMapping("/signup") fun signup(@RequestBody user: User): ResponseEntity { val result = userService.signup(user) return if (result) { ResponseEntity.ok("注册成功") } else { ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("注册失败") } } @PostMapping("/signin") fun signin(@RequestBody user: User): ResponseEntity { val token = userService.signin(user) return if (token == null) { ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("用户名或密码错误") } else { ResponseEntity.ok(token) } } }
- 创建 UserService
在UserService中实现用户注册和登录的逻辑。
@Service class UserService(val userMapper: UserMapper, val bcryptEncoder: BCryptPasswordEncoder) { fun signup(user: User): Boolean { val encodedPassword = bcryptEncoder.encode(user.password) user.password = encodedPassword return userMapper.insert(user) > 0 } fun signin(user: User): String? { val queryWrapper = QueryWrapper().eq("username", user.username) val dbUser = userMapper.selectOne(queryWrapper) ?: return null return if (bcryptEncoder.matches(user.password, dbUser.password)) { // 返回一个JWT Token Jwts.builder() .setSubject(user.username) .setExpiration(Date(System.currentTimeMillis() + 864000000L)) .signWith(SignatureAlgorithm.HS512, "secret".toByteArray()) .compact() } else { null } } }
- 测试
现在可以通过Postman等工具进行测试了。输入localhost:8080/api/v1/users/signup注册用户,输入localhost:8080/api/v1/users/signin登录并获取token。
至此,您已经完成了创建一个基于Kotlin、Spring Boot、MyBatis-Plus和MySQL的用户登录实例项目。
-
-
@OpenAI机器人 咋接口又挂了?