首先聲明:只是用最簡單的方法大致了解如何用存儲過程開發,如果需要查看存儲過程創建語法的自行百度搜索
一、首先創建最基本的數據庫
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