2.从零点五开始的Java之路(连接数据库)
添加数据库相关依赖
打开pom.xml文件,在dependencies标签下加入
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.0</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
第一个依赖是 mysql 数据库。
第二个依赖是 org.mybatis,mybatis 包。
第三个依赖是 org.mybatis.spring.boot,主要用来集成 mybatis 和 spring 框架。
依赖完注意当前界面的屏幕右上方的同步按钮。点击同步。
image.png
或者
image.png
数据库建表
先简单的建一个用户表。
user_id可以设置为主键,自动递增。
image.png
配置数据库相关参数
打开src-main-ressources包下的 application.properties 文件,添加以下配置
spring.datasource.url=jdbc:mysql://localhost:3306/mums?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
spring.datasource.username=root
spring.datasource.password=123456789
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
mybatis.type-aliases-package=com.xxx.entity
spring.datasource.url:数据库服务器地址。
mysql://localhost:3306/mums? 中的mums是自己数据库的名字
spring.datasource.username:数据库登陆用户名。
spring.datasource.password:数据库登陆密码。
修改为自己的用户名和密码
spring.datasource.driver-class-name:数据库连接驱动类。
mybatis.mapper-locations:mybatis 映射扫描路径。
mybatis.mapper-locations=classpath:mapper/*Mapper.xml 根据当前写的需要在ressources包下创建一个mapper包用户来存放*Mapper.xml文件
mybatis.type-aliases-package:实体扫描路径。
mybatis.type-aliases-package=com.xxx.entity 自己根据自己的entity包路径修改
编写一个注册接口
1.创建实体类user,根据数据库表添加相关字段。
public class User {
private int user_id;
private String user_name;
private String user_account;
private String user_password;
private String create_time;
public int getUser_id() {
return user_id;
}
public void setUser_id(int user_id) {
this.user_id = user_id;
}
public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public String getUser_account() {
return user_account;
}
public void setUser_account(String user_account) {
this.user_account = user_account;
}
public String getUser_password() {
return user_password;
}
public void setUser_password(String user_password) {
this.user_password = user_password;
}
public String getCreate_time() {
return create_time;
}
public void setCreate_time(String create_time) {
this.create_time = create_time;
}
@Override
public String toString() {
return "User{" +
"user_name='" + user_name + '\'' +
", user_id=" + user_id +
", user_account='" + user_account + '\'' +
", user_password='" + user_password + '\'' +
", create_time='" + create_time + '\'' +
'}';
}
}
2.在entity包下创建Response 类,用来返回接口调用信息描述。
public class Response<T> {
private int status;
private String msg;
private T data;
//写个带参的构造方法方便返回
public Response(int status, String msg) {
this.status = status;
this.msg = msg;
}
public Response(int status, String msg, T data) {
this.status = status;
this.msg = msg;
this.data = data;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}
注意设置data类型为泛型时候,写个T 根据提示选择图中选项。
image.png
3.创建服务类接口UserService,在接口中实现注册方法
public interface UserService {
//注册
int register(User user);
}
4. 创建一个mapper包,在包中根据UserService创建 对应UserMapper接口类。
@Mapper
@Repository
public interface UserMapper {
int register(User user);
}
注意@Mapper @Repository注释
5.在UserServiceImpl中实现接口方法。
@Service
public class UserServiceImpl implements UserService {
@Autowired
UserMapper userMapper;
@Override
public int register(User user) {
//操作数据库
int result = userMapper.register(user);
return result;
}
}
6.关联数据库,写 sql 语句。
在resources包下创建一个mapping包,在包里创建UserMapper.xml
注意当前名字要和application.properties中mybatis.mapper-locations=classpath:里面的名字一样。
<?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.xxx.mums.mapper.UserMapper">
<resultMap id="BaseResultMap" type="com.xxx.mums.entity.User">
<id column="user_id" jdbcType="INTEGER" property="user_id"/>
<result column="user_account" jdbcType="VARCHAR" property="user_account"/>
<result column="user_password" jdbcType="VARCHAR" property="user_password"/>
<result column="user_name" jdbcType="VARCHAR" property="user_name"/>
<result column="create_time" jdbcType="TIMESTAMP" property="create_time"/>
</resultMap>
<!-- 封装数据库字段方便操作,要和values里面的字段对应-->
<sql id="Base_List">
user_account, user_password,user_name
</sql>
<!-- 数据库-增-->
<!-- values括里的字段是User实体类里面的字段-->
<insert id="register" parameterType="com.xxx.mums.entity.User">
insert into user (<include refid="Base_List"/>)
values (#{user_account},#{user_password},#{user_name})
</insert>
</mapper>
一定要注意parameterType="com.xxx.mums.entity.User"中的包名是否正确,还有字段名。
7.调用服务创建UserController操作类。
@RestController
public class UserController {
@Autowired
UserService service;
//注册
@RequestMapping(value = "/register", method = RequestMethod.POST)
public Response<User> register(@RequestBody User user) {
int status;
String msg;
int result = service.register(user);
//result返回值大于0说明操作数据库添加用户成功
if (result > 0) {
status = 1;
msg = "注册成功!";
} else {
status = 0;
msg = "注册失败!";
}
return new Response<>(status, msg, user);
}
}
完事了。看一下项目结构。
image.png打开接口测试工具测试一下接口。
image.png因为我们UserController中写的接收使用Body接收的,所以选择json传参。
image.png