首先,我们需要创建一个用户表和一个子账户表。用户表用于存储用户的基本信息,子账户表用于存储用户的子账户信息。\n\n用户表的字段可以包含以下信息:\n- id:用户ID\n- username:用户名\n- password:密码\n- email:邮箱\n- create_time:创建时间\n\n子账户表的字段可以包含以下信息:\n- id:子账户ID\n- user_id:用户ID\n- account_name:子账户名\n- create_time:创建时间\n\n接下来,我们需要创建数据库表和相应的实体类。\n\n在Spring Boot项目中,我们可以使用MyBatis框架来进行数据库操作。MyBatis是一个持久层框架,它可以将Java对象映射到数据库表中,并提供了一系列的API来操作数据库。\n\n首先,我们需要添加相关依赖到项目的pom.xml文件中:\nxml\n<dependencies>\n <!-- Spring Boot Starter Web -->\n <dependency>\n <groupId>org.springframework.boot</groupId>\n <artifactId>spring-boot-starter-web</artifactId>\n </dependency>\n\n <!-- MyBatis Starter -->\n <dependency>\n <groupId>org.mybatis.spring.boot</groupId>\n <artifactId>mybatis-spring-boot-starter</artifactId>\n <version>2.2.0</version>\n </dependency>\n\n <!-- MySQL Connector -->\n <dependency>\n <groupId>mysql</groupId>\n <artifactId>mysql-connector-java</artifactId>\n <version>8.0.23</version>\n </dependency>\n</dependencies>\n\n\n接下来,我们需要配置数据库连接和MyBatis相关的配置。在application.properties(或application.yml)文件中添加以下配置:\nproperties\n# 数据库连接配置\nspring.datasource.url=jdbc:mysql://localhost:3306/db_name?serverTimezone=UTC&useSSL=false\nspring.datasource.username=username\nspring.datasource.password=password\nspring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver\n\n# MyBatis配置\nmybatis.mapper-locations=classpath:mapper/*.xml\nmybatis.type-aliases-package=com.example.demo.entity\n\n\n然后,我们需要创建数据库表和实体类。可以使用以下SQL语句创建用户表和子账户表:\nsql\nCREATE TABLE `user` (\n `id` int(11) NOT NULL AUTO_INCREMENT,\n `username` varchar(50) NOT NULL,\n `password` varchar(50) NOT NULL,\n `email` varchar(50) NOT NULL,\n `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,\n PRIMARY KEY (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;\n\nCREATE TABLE `sub_account` (\n `id` int(11) NOT NULL AUTO_INCREMENT,\n `user_id` int(11) NOT NULL,\n `account_name` varchar(50) NOT NULL,\n `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,\n PRIMARY KEY (`id`),\n KEY `fk_user_id` (`user_id`),\n CONSTRAINT `fk_user_id` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE\n) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;\n\n\n创建完成后,我们需要创建对应的实体类。在src/main/java/com/example/demo/entity目录下创建User.java和SubAccount.java文件,代码如下:\n\nUser.java:\njava\npublic class User {\n private Integer id;\n private String username;\n private String password;\n private String email;\n private LocalDateTime createTime;\n\n // 省略getter和setter方法\n}\n\n\nSubAccount.java:\njava\npublic class SubAccount {\n private Integer id;\n private Integer userId;\n private String accountName;\n private LocalDateTime createTime;\n\n // 省略getter和setter方法\n}\n\n\n接下来,我们需要创建对应的Mapper接口和Mapper XML文件。在src/main/java/com/example/demo/mapper目录下创建UserMapper.java和SubAccountMapper.java文件,代码如下:\n\nUserMapper.java:\njava\n@Mapper\npublic interface UserMapper {\n void insert(User user);\n User selectById(Integer id);\n User selectByUsername(String username);\n List<User> selectAll();\n}\n\n\nSubAccountMapper.java:\njava\n@Mapper\npublic interface SubAccountMapper {\n void insert(SubAccount subAccount);\n List<SubAccount> selectByUserId(Integer userId);\n}\n\n\n在src/main/resources/mapper目录下创建UserMapper.xml和SubAccountMapper.xml文件,代码如下:\n\nUserMapper.xml:\nxml\n<?xml version="1.0" encoding="UTF-8" ?>\n<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >\n<mapper namespace="com.example.demo.mapper.UserMapper">\n <insert id="insert" parameterType="com.example.demo.entity.User">\n INSERT INTO `user` (username, password, email, create_time)\n VALUES (#{username}, #{password}, #{email}, #{createTime})\n </insert>\n\n <select id="selectById" parameterType="java.lang.Integer" resultType="com.example.demo.entity.User">\n SELECT * FROM `user` WHERE id = #{id}\n </select>\n\n <select id="selectByUsername" parameterType="java.lang.String" resultType="com.example.demo.entity.User">\n SELECT * FROM `user` WHERE username = #{username}\n </select>\n\n <select id="selectAll" resultType="com.example.demo.entity.User">\n SELECT * FROM `user`\n </select>\n</mapper>\n\n\nSubAccountMapper.xml:\nxml\n<?xml version="1.0" encoding="UTF-8" ?>\n<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >\n<mapper namespace="com.example.demo.mapper.SubAccountMapper">\n <insert id="insert" parameterType="com.example.demo.entity.SubAccount">\n INSERT INTO `sub_account` (user_id, account_name, create_time)\n VALUES (#{userId}, #{accountName}, #{createTime})\n </insert>\n\n <select id="selectByUserId" parameterType="java.lang.Integer" resultType="com.example.demo.entity.SubAccount">\n SELECT * FROM `sub_account` WHERE user_id = #{userId}\n </select>\n</mapper>\n\n\n接下来,我们需要创建Service层和Controller层来提供接口供前端调用。\n\n在src/main/java/com/example/demo/service目录下创建UserService.java和SubAccountService.java文件,代码如下:\n\nUserService.java:\njava\n@Service\npublic class UserService {\n @Autowired\n private UserMapper userMapper;\n\n public void insertUser(User user) {\n userMapper.insert(user);\n }\n\n public User getUserById(Integer id) {\n return userMapper.selectById(id);\n }\n\n public User getUserByUsername(String username) {\n return userMapper.selectByUsername(username);\n }\n\n public List<User> getAllUsers() {\n return userMapper.selectAll();\n }\n}\n\n\nSubAccountService.java:\njava\n@Service\npublic class SubAccountService {\n @Autowired\n private SubAccountMapper subAccountMapper;\n\n public void insertSubAccount(SubAccount subAccount) {\n subAccountMapper.insert(subAccount);\n }\n\n public List<SubAccount> getSubAccountsByUserId(Integer userId) {\n return subAccountMapper.selectByUserId(userId);\n }\n}\n\n\n在src/main/java/com/example/demo/controller目录下创建UserController.java文件,代码如下:\n\nUserController.java:\njava\n@RestController\n@RequestMapping("/users")\npublic class UserController {\n @Autowired\n private UserService userService;\n\n @PostMapping\n public void addUser(@RequestBody User user) {\n userService.insertUser(user);\n }\n\n @GetMapping("/{id}")\n public User getUserById(@PathVariable Integer id) {\n return userService.getUserById(id);\n }\n\n @GetMapping\n public List<User> getAllUsers() {\n return userService.getAllUsers();\n }\n}\n\n\n在src/main/java/com/example/demo/controller目录下创建SubAccountController.java文件,代码如下:\n\nSubAccountController.java:\njava\n@RestController\n@RequestMapping("/sub-accounts")\npublic class SubAccountController {\n @Autowired\n private SubAccountService subAccountService;\n\n @PostMapping\n public void addSubAccount(@RequestBody SubAccount subAccount) {\n subAccountService.insertSubAccount(subAccount);\n }\n\n @GetMapping("/{userId}")\n public List<SubAccount> getSubAccountsByUserId(@PathVariable Integer userId) {\n return subAccountService.getSubAccountsByUserId(userId);\n }\n}\n\n\n至此,我们已经完成了用户模块的设计。用户可以通过调用UserController的接口来新增用户和获取用户信息,通过调用SubAccountController的接口来新增子账户和获取子账户信息。\n\n对于记录用户及子账户每天的登录情况,可以在用户登录成功后,通过调用后端接口来记录登录情况。可以在User实体类中添加相应的字段,如lastLoginTime,并在登录成功后更新该字段。


原文地址: https://www.cveoy.top/t/topic/pLAC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录