mysql注解调用存储_Mybatis基于注解方式调用Mysql的存储过程

1,构建一个存储过程

PROCEDURE qiyi_ma2.gen_ci_property_value ()

BEGIN

SET

SESSION group_concat_max_len = 10240

; DROP

VIEW IF EXISTS v_ci_property_value

; SELECT

GROUP_CONCAT(

'ifnull(MAX(CASE WHEN property_id=' ,

id ,

' THEN VALUE END), '') AS ' ,

'' '' ,

id ,

'FIX' ,

'' ''

)

FROM

PROPERTY_POOL INTO

@s1

;

SET

@sql = CONCAT( 'CREATE VIEW v_ci_property_value AS SELECT CPV.ID AS id,

MAX(CI.CLASS_ID) AS CLASS_ID,

MAX(CI.EN_NAME) AS enName, ' ,@s1 ,'

FROM CI_PROPERTY_VALUE CPV INNER JOIN CONFIG_ITEM CI ON CPV.ID = CI.ID

GROUP BY CPV.ID

ORDER BY CI.CLASS_ID' )

; SELECT

@sql

; PREPARE stmt

FROM

@sql

; EXECUTE stmt

;

END 这个只是我自己的sql,没有IO参数,应根据实际情况来处理。

2,DAO中,基于注解的调用接口

/**

* 执行存储过程gen_ci_property_value

*/

@SuppressWarnings("rawtypes")

@Select("call gen_ci_property_value()")

@Options(statementType= StatementType.CALLABLE )

public HashMap callGenCiPropertyValue();

本例中实际上不需要返回值,但是mybatis会有返回值,使用void会报错,这里用HashMap兼容了。

使用的注解和查询一样,但是要指定statementType为CALLABLE。

3,Service层中的调用

public void save(ClassTree ct) throws RuntimeException {

SqlSession sqlSession = null;

try {

sqlSession = sqlSessionFactory.openSession();

sqlSession.getMapper(ClassTreeDao.class).callGenCiPropertyValue();

mit();

} catch (Exception e) {

e.printStackTrace();

throw new RuntimeException(e.toString());

} finally {

if (sqlSession != null)

sqlSession.close();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值