zoukankan      html  css  js  c++  java
  • Spring Boot JDBC 使用教程

    总是要用到数据库的嘛,曾经我一度以为,写代码,编程就是搞数据库增删改查,甚至你设计一个系统,大部分时候在为如何设计关系型数据库努力,究其原因,是因为关系型数据库是逻辑的主要呈现。

    这个系列,主要是对 Spring Boot 的数据库操作做一些示例程序展示。包括 mybatis、jpa操作、不同数据库的链接方式、多数据源切换、分库分表、自动编号问题、数据库优化问题。

    从本系列开始,都需要用到 mysql 数据库 和其他一些参考的数据库。请准备相关环节。

    • mysql 5.6+
    • jdk1.8+
    • spring boot 2.1.6
    • idea 2018.1

    本项目源码下载

    1 准备数据库

    mysql 5.6+ 数据库

    导入数据表 数据表t_user下载

    (注意:本人使用了 Navicat PreminumMysql 进行管理)

    如果想学习如何在 Centos7 上部署 mysql 可以参考我这篇 阿里云上的Centos 7.6的一次Nginx+Mysql+PHP7.3 部署https://www.cnblogs.com/fishpro/p/10651011.html)

    字段 类型 主键 说明
    id int 自动编号
    user_name varchar(100) 用户名
    password varchar(255) 密码
    last_login_time date 最近登录时间
    sex tinyint 性别 0男 1女 2其他
    
    SET NAMES utf8mb4;
    SET FOREIGN_KEY_CHECKS = 0;
    
    -- ----------------------------
    -- Table structure for t_user
    -- ----------------------------
    DROP TABLE IF EXISTS `t_user`;
    CREATE TABLE `t_user` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `user_name` varchar(255) DEFAULT NULL,
      `password` varchar(255) DEFAULT NULL,
      `last_login_time` datetime DEFAULT NULL,
      `sex` tinyint(4) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=armscii8;
    
    -- ----------------------------
    -- Records of t_user
    -- ----------------------------
    BEGIN;
    INSERT INTO `t_user` VALUES (1, 'json', '123', '2019-07-27 16:01:21', 1);
    INSERT INTO `t_user` VALUES (2, 'jack jo', '123', '2019-07-24 16:01:37', 1);
    INSERT INTO `t_user` VALUES (3, 'manistal', '123', '2019-07-24 16:01:37', 1);
    INSERT INTO `t_user` VALUES (4, 'landengdeng', '123', '2019-07-24 16:01:37', 1);
    INSERT INTO `t_user` VALUES (5, 'max', '123', '2019-07-24 16:01:37', 1);
    COMMIT;
    
    SET FOREIGN_KEY_CHECKS = 1;
    

    2 新建 Spring Boot 项目工程

    1. File > New > Project,如下图选择 Spring Initializr 然后点击 【Next】下一步
    2. 填写 GroupId(包名)、Artifact(项目名) 即可。点击 下一步
      groupId=com.fishpro
      artifactId=jdbc
    3. 选择依赖 Spring Web Starter 前面打钩,勾选SQL选项的 JDBC、MySql。
    4. 项目名设置为 spring-boot-study-jdbc.

    3 依赖引入 Pom.xml

        <dependencies>
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-jdbc</artifactId>
    		</dependency>
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-web</artifactId>
    		</dependency>
    		<dependency>
    			<groupId>mysql</groupId>
    			<artifactId>mysql-connector-java</artifactId>
    		</dependency>
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-test</artifactId>
    			<scope>test</scope>
    		</dependency>
    	</dependencies>
    

    4 Jdbc 配置

    application.yml 配置(.properties文件类似)

    server:
      port: 8086
    
    spring:
      datasource:
        driverClassName: com.mysql.jdbc.Driver
        url: jdbc:mysql://localhost:3306/demo_test?useSSL=false&useUnicode=true&characterEncoding=utf8
        username: root
        password: 123
    

    5 编写示例代码

    增加代码 controller/UserController.java

    @RestController
    @RequestMapping("/api/user")
    public class UserController {
    
        @Autowired
        private JdbcTemplate jdbcTemplate;
    
        /**
         * 获取示例数据库 t_user 的全部信息 
         * @return 返回 json 数据
         * */
        @GetMapping("/users")
        public Object   getUsers(){
            List<Map<String,Object>> list=jdbcTemplate.queryForList("select * from t_user ");
            return  list;
        }
    
    }
    

    6 运行示例

    运行 JdbcApplication 后在浏览器输入 http://localhost:8086/api/user/users 输出如下结果:

    [{
    	"id": 1,
    	"user_name": "json",
    	"password": "123",
    	"last_login_time": "2019-07-27T21:01:21.000+0000",
    	"sex": 1
    }, {
    	"id": 2,
    	"user_name": "jack jo",
    	"password": "123",
    	"last_login_time": "2019-07-24T21:01:37.000+0000",
    	"sex": 1
    }, {
    	"id": 3,
    	"user_name": "manistal",
    	"password": "123",
    	"last_login_time": "2019-07-24T21:01:37.000+0000",
    	"sex": 1
    }, {
    	"id": 4,
    	"user_name": "landengdeng",
    	"password": "123",
    	"last_login_time": "2019-07-24T21:01:37.000+0000",
    	"sex": 1
    }, {
    	"id": 5,
    	"user_name": "max",
    	"password": "123",
    	"last_login_time": "2019-07-24T21:01:37.000+0000",
    	"sex": 1
    }]
    

    7 问题思考

    1. JdbcTemplate 如何动态获取数据库
    2. JdbcTemplate 如何实现 POJO 操作
    3. JdbcTemplate 如何分表分库
    4. JdbcTemplate 如何操作 Oracle 和 MSSQL Server

    本项目源码下载

  • 相关阅读:
    IsBadReadPtr|IsBadWritePtr调试崩溃
    VSCode配置python调试环境
    Visual Studio Code 如何编写运行 C、C++ 程序?
    使用nginx做反向代理
    Win10环境下配置VScode的C++编译环境
    关于java 获取 html select标签 下拉框 option 文本内容 隐藏域
    【VSCode】Windows下VSCode编译调试c/c++【更新 2018.03.27】
    VS Code 配置 C/C++ 环境
    改变你一生的编辑器:VSCode使用总结
    CentOS7,安装Tomcat8.5、JDK1.8,并设置开机启动(Linux CentOS Tomcat、JDK+Tomcat、Tomcat开机自启动)
  • 原文地址:https://www.cnblogs.com/fishpro/p/spring-boot-study-jdbc.html
Copyright © 2011-2022 走看看