zoukankan      html  css  js  c++  java
  • Spring Boot Mybatis 最基本使用mysql存储过程

    首先声明:只是用最简单的方法大致了解如何用存储过程开发,如果需要查看存储过程创建语法的自行百度搜索

    一、首先创建最基本的数据库

    CREATE TABLE `t_user` (
      `id` varchar(255) NOT NULL,
      `user_name` varchar(255) DEFAULT NULL,
      `user_acct` varchar(255) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    按照版本不同进行适当修改,不要说什么sql不能用,这么简单的sql,自己手写一个适合的也很容易吧。

    二、创建最简单的存储过程

    CREATE PROCEDURE select_user(IN userId INT)
    BEGIN
    SELECT `name` FROM sys_user WHERE id = userId;
    END

    创建一个存储过程 IN 是输入参数 可以理解为查询条件传参

     

    三、知道如何在mysql中更改和调用存储过程

    SET @userId = '1';
    CALL select_user(@userId);

     设置传入参数

     四、创建基本的SpringBoot项目

    通过idea直接进行创建、很简单,简单的SpringMvc项目

    加入mysql架包和yml或properties文件

    POM文件

     <!--mysql需要jar包 start-->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.1.6</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>
    <!--mysql需要jar包 end-->

    application.yml或application.properties(填写自己对应的数据库)

    spring:
     datasource:
        name: dataSource
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/owner?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true&failOverReadOnly=false&serverTimezone=UTC
        username: root
        password: root

    五、编写controller,service,dao,mapper.xml文件

    ProcedureController(注意:我的是post请求,如果不会用postman的童鞋,请更改为get请求,注解为@GetMapper)
    @RestController
    @RequestMapping("procedure")
    public class ProcedureController {
        @Resource
        private ProcedureService procedureService;
        @PostMapping("/getParam")
        public String getParam() {
            Map<String,String> para = new HashMap<>(1);
            para.put("userId","1");
            String str = procedureService.getParam(para);
            return str;
        }
    }
    ProduceServiceImpl 面向接口编程(可以按照条件自己更改)debug调试的话可以知道str中存放的具体数据是什么,
    @Service
    public class ProduceServiceImpl implements ProcedureService {
        @Resource
        private ProcedureDao procedureDao;
        @Override
        public String getParam(Map<String, String> param) {
            Map<String , String> str =  procedureDao.getParam(param);
            return "123";
        }
    }
    ProcedureDao
    public interface ProcedureDao {
        Map<String , String> getParam(Map<String,String> param);
    }
    ProcedureDaoMapper.xml(记得一定要有返回类型)
    <?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.example.junittest.dao.ProcedureDao">
        <parameterMap type="Map" id="getMap">
            <parameter property="userId" jdbcType="VARCHAR" javaType="String" mode="IN"/>
        </parameterMap>
        <select id="getParam" parameterMap="getMap" statementType="CALLABLE" resultType="map">
           {CALL select_user(?)}
        </select>
    </mapper>

    六、运行调用接口即可

    接口地址:http://localhost:8080/procedure/getParam

     

     

  • 相关阅读:
    数据绑定(八)使用Binding的RelativeSource
    你是程序猿这块料吗?
    创建与删除索引
    Verilog分频器
    mysql触发器的作用及语法
    QoS令牌桶工作原理
    Android 开发新方向 Android Wear ——概述
    程序猿接私活经验总结,来自csdn论坛语录
    [Node.js]27. Level 5: URL Building & Doing the Request
    [Node.js]26. Level 5 : Route rendering
  • 原文地址:https://www.cnblogs.com/xxxhstar/p/11718104.html
Copyright © 2011-2022 走看看