【Mybatis学习】Mybatis学习之调用Mysql存储过程(1传入2输出)
2017-11-19 21:23
330 查看
Mybatis调用MySql中的存储过程(1传入2输出)
1.定义存储过程
目标数据库表结构:存储过程:直接用语句执行总出现错误,暂时没解决,大致如下:
CREATE OR REPLACE PROCEDURE findByUname(uname VARCHAR(255),OUT sid INT,OUT rname VARCHAR(255)) BEGIN SELECT id,real_name into sid,rname FROM t_student WHERE username = uname; END利用数据库管理工具进行保存存储过程结果如下:
2.Mybatis调用存储过程
参数以Map形式传入。添加CALLABLE属性。<parameterMap id="map1" type="java.util.Map"> <parameter property="uname" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/> <parameter property="sid" jdbcType="INTEGER" javaType="java.lang.Integer" mode="OUT"/> <parameter property="rname" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT"/> </parameterMap> <select id="findByUname" parameterMap="map1" statementType="CALLABLE"> <![CDATA[ {call findByUname(?,?,?)} ]]> </select>
3.JAVA执行方法
Mapper接口方法:void findByUname(Map<String,Object> map );ServiceImpl:
public void findByUname(Map<String, Object> map) { studentDao.findByUname(map); }Controller:
Map<String, Object> map = new HashMap<String,Object>(); map.put("uname","1234"); map.put("sid",null); map.put("rname",""); studentService.findByUname(map); System.out.println(map.get("sid").toString()+"__"+map.get("rname"));运行结果:
4.注意与总结
执行语句被CDATA包裹传入、传出参数注意jdbcType类型需要与Mybatis中的typeHandler一致,否则报错
传入、传出参数带有mode属性,可用IN、OUT、INOUT
Mysql传入、出的参数如果是VARCHAR需要附带字段长度,否则报错
JAVA调用时注意传入Map时的参数形式
相关文章推荐
- mybatis 调用mysql存储过程 带输出输入参数
- mybatis 调用mysql存储过程 带输出输入参数
- MyBatis—调用mysql存储过程 带输出输入参数
- mybatis 调用mysql存储过程 带输出输入参数
- myBatis调用带返回值的存储过程(mysql)
- MyBatis学习总结(六)——调用存储过程
- mybatis调用orcale存储过程-传入多个参数返回结果集
- mysql存储过程学习及java调用存储过程
- MyBatis学习总结(六)——调用存储过程
- MyBatis学习总结(六)——调用存储过程
- MyBatis学习总结(六)——调用存储过程
- mysql 存储过程,以及mybatis如何调用
- mybatis调用mysql存储过程,带结果集
- Mysql的存储过程,Mybatis对存储过程的调用
- mysql存储过程学习及java调用存储过程
- MyBatis学习总结(六)——调用存储过程
- mybatis调用mysql存储过程(返回值问题)
- MyBatis学习 ——调用存储过程
- MyBatis学习总结(六)——调用存储过程
- MyBatis学习总结(六)——调用存储过程