美文网首页
2.从零点五开始的Java之路(连接数据库)

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

作者: 苏坡坡要吃婆婆酥 | 来源:发表于2020-09-04 18:49 被阅读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

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

    相关文章

      网友评论

          本文标题:2.从零点五开始的Java之路(连接数据库)

          本文链接:https://www.haomeiwen.com/subject/dxftektx.html