2.从零点五开始的Java之路(连接数据库)

2020-09-04  本文已影响0人  苏坡坡要吃婆婆酥

添加数据库相关依赖

打开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是自己数据库的名字

image.png

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

打开数据库刷新一下

image.png

到此完事了。 出现问题不要慌,一定要注意自己数据库的名字,字段是否配置一致。

上一篇下一篇

猜你喜欢

热点阅读