1.直接跑通Demo,修改配置文件。导入数据库sql文件即可。
2.跟着一步一步实现。
当然你也可以先跑通Demo,在尝试自己跟着来一遍
需要源码和Demo 跳转新项目 跳转新项目
Demo地址: https://github.com/wangzhifengroot/login
只需要两步
1.修改这里的IP地址、数据库名称、用户和密码
2.创建数据库和表
导入下面sql文件
user.sql
需要安装一下开发工具
1.IDEA https://www.jetbrains.com/zh-cn/idea/
2.mysql https://www.mysql.com/downloads/
3.maven
4.Navicat mysql
选择1.8的JDK,当然你可以选择更高的。(推荐使用和我一样的)
选default 点击net
修改artifact 为login、type修改为maven 、语言选择java、版本依然选8,点击net
这一步我们可以直接跳过,后面添加就行.
下一步直接finish
找到pom.xml 文件
修改pom.xml
org.springframework.boot spring-boot-starter-web org.mybatis.spring.boot mybatis-spring-boot-starter 2.0.0 mysql mysql-connector-java runtime
完整pom.xml 参考使用
4.0.0 org.springframework.boot spring-boot-starter-parent 2.4.0 com.example.login login 0.0.1-SNAPSHOT login Demo project for Spring Boot 1.8 org.springframework.boot spring-boot-starter-web org.mybatis.spring.boot mybatis-spring-boot-starter 2.0.0 mysql mysql-connector-java runtime org.springframework.boot spring-boot-maven-plugin
找到下面的application文件, 修改后缀为.yml和图一样
修改yml 替换你的mysql地址+username、密码
server:
port: 9090
spring:
datasource:
url: jdbc:mysql://mysql地址/sanguo?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT
username: 用户
password: 密码
新增4个包
bean 为数据类、controller 对外提供调用、dao 数据库操作、serivce 对数据操作
在bean包下创建User 数据类
public class User {
// 用于数据库主键
private long id;
// 用户名,不能重复
private String account_number;
// 用户密码
private String password;
// 手机号
private String phone;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getAccount_number() {
return account_number;
}
public void setAccount_number(String account_number) {
this.account_number = account_number;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
创建数据库的表,如果有mysql基础的可以直接按上面的User类创建。
没有基础的可以使用Navicat mysql 来创建,避免深陷sql语句中。
下载sql文件,在Navicat mysql 点击数据库选择运行sql文件。
或者复制我这个sql到mysql中
CREATE TABLE `user` ( `id` bigint(32) NOT NULL AUTO_INCREMENT, `account_number` varchar(255) NOT NULL, `password` varchar(255) NOT NULL, `phone` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;
创建Result类,用于规范数据返回。方便前端和Android同学。(很重要)
public class Result{ // 返回信息 private String msg; // 返回code -1等于失败 200成功 private int code; // 具体返回的数据 private T detail; public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public T getDetail() { return detail; } public void setDetail(T detail) { this.detail = detail; } public void setCode(int code) { this.code = code; } public int getCode() { return code; } @Override public String toString() { return "Result{" + "msg='" + msg + ''' + ", code=" + code + ", detail=" + detail + '}'; } }
创建UserController类
// 相当于@Controller+@RequestBody
@RestController
// 访问目录
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@PostMapping(value = "/register")
public Result register(User user) {
Result regist = userService.register(user);
return regist;
}
@PostMapping(value = "/login")
public Result login(User user) {
return userService.login(user);
}
}
创建HelloController 这个可以不创建,只是为了test使用的。
@RestController
public class HelloController {
@GetMapping(value = "/hello")
public String hello() {
return "hello";
}
}
创建UserMapper 这个是操作数据库的
@Mapper
@Repository
public interface UserMapper {
@Select(value = "select u.account_number,u.password from user u where u.account_number=#{account_number}")
@Results({@Result(property = "account_number", column = "account_number"),
@Result(property = "password", column = "password")})
User findUserByName(@Param("account_number") String account_number);
@Insert("insert into user values(#{id},#{account_number},#{password},#{phone})")
// 加入该注解可以保存对象后,查看对象插入id
@Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
void register(User user);
@Select("select u.id from user u where u.account_number = #{account_number} and password = #{password}")
Long login(User user);
}
创建UserService用于逻辑操作
@Service
@Transactional(rollbackFor = RuntimeException.class)
public class UserService {
@Autowired
private UserMapper userMapper;
public Result register(User user) {
Result result = new Result();
result.setCode(-1);
result.setDetail(null);
try {
User existUser = userMapper.findUserByName(user.getAccount_number());
if (existUser != null) {
//如果用户名已存在
result.setCode(-1);
result.setMsg("用户名已存在");
} else {
userMapper.register(user);
result.setMsg("注册成功");
result.setCode(200);
result.setDetail(user);
}
} catch (Exception e) {
result.setMsg(e.getMessage());
e.printStackTrace();
}
return result;
}
public Result login(User user) {
Result result = new Result();
result.setCode(-1);
result.setDetail(null);
try {
Long userId = userMapper.login(user);
if (userId == null) {
result.setCode(-1);
result.setMsg("用户名或密码错误");
} else {
result.setCode(200);
result.setMsg("登录成功");
user.setId(userId);
result.setDetail(user);
}
} catch (Exception e) {
result.setMsg(e.getMessage());
e.printStackTrace();
}
return result;
}
}
在resources创建resources文件
复制html
登录 login.html
用户登录
注册 register.html
用户注册
一切准备就绪了
运行项目
访问 http://localhost:9090/regist.html
试试能否注册成功



