1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Mybatis 调用存储过程

Mybatis 调用存储过程

时间:2020-06-22 09:03:39

相关推荐

Mybatis 调用存储过程

目录

1. 创建存储过程

2.UserMapper.xml文件中写sql标签

3. UserDao接口

4. 测试

5.报错

1. 创建存储过程

存储过程名为pr_BlurNameCount(),IN和OUT:

输入参数为myName,查询username=‘lyx'的用户数量,输出参数为u_count

类型为varchar和int

2.UserMapper.xml文件中写sql标签

如图,在select标签中定义

通过调用【存储过程】:call 存储过程名 实现查询,

statementType="CALLABLE"设置SQL的执行方式是存储过程

存储过程的输入参数,在mybatis用Map来场传递(HashMap)

parameterType="HashMap"

所以parameterType="HashMap"是固定写法

输入参数myName和输出参数u_count需要通过HashMap的key值来指定

call 存储过程名(输入参数,输出参数)

要指定两者的jdbcType和mode,其中输入参数的jdbcType为varchar类型,mode为IN

输入参数的jdbcType为INTEGER类型,mode为OUT

<!-- 通过调用【存储过程】实现查询,statementType="CALLABLE"设置SQL的执行方式是存储过程存储过程的输入参数,在mybatis用Map来场传递(HashMap)存储过程的输入参数myName和输出参数u_count需要通过HashMap来指定--><select id="queryCountByBlurName" statementType="CALLABLE" parameterType="HashMap">{ call pr_BlurNameCount(#{myName,jdbcType=VARCHAR,mode=IN},#{u_count,jdbcType=INTEGER,mode=OUT})}</select>

3. UserDao接口

没有返回值,存储过程的结果在HashMap中key值为u_count

4. 测试

这里演示的是查询,测试代码不需要mitI();

如果是删除和修改的存储过程,需要提交,不然会报错;

究其原因,还是mybatis配置文件中的事务管理是jdbc

import com.lyx.mybatis.dao.UserDao;import com.lyx.mybatis.entity.User;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;import java.io.InputStream;import java.io.Reader;import java.util.HashMap;import java.util.List;import java.util.Scanner;public class Test {public static void main(String[] args) throws IOException {Reader reader = Resources.getResourceAsReader("mybatis-config.xml");SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);//这个session相当于connectionSqlSession sqlSession = sqlSessionFactory.openSession();UserDao mapper = sqlSession.getMapper(UserDao.class);HashMap<String,Object> hashMap = new HashMap<>();hashMap.put("myName","lyx");mapper.queryCountByBlurName(hashMap);System.out.println(hashMap.get("u_count"));mit();}}

5.报错

JavaType和JdbcType的对应关系

MyBatis配置Mapping,JavaType和JDBCType的对应关系,#与$区别 /zengming/p/7769219.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。