В этой статье мы узнаем о процессе использования и запуска Mybatis вызовов сохраненных процедур. Во -первых, мы создаем простую сохраненную процедуру
Delimiter $ create tropecture mybatis.ges_user_count (in age int, out out user_count int) Начните выбрать счет (*) от пользователей, где users.age = age in user_count; Конец $
Значение этой хранимой процедуры на самом деле относительно прост, то есть ввести возраст, а затем выполнить счет SELECT (*) от пользователей, где users.age = age in user_count; Относительно просто получить количество людей с возрастом, равным возрасту, чтобы присвоить значение user_count.
Следующим является звонок хранимой процедуры. Выполните следующую команду для завершения вызова хранимой процедуры.
Далее, давайте посмотрим, как называются хранимых процедур с помощью mybatis.
usermapper.xml добавляет конфигурацию вызова хранимой процедуры:
<select id = "count" atportiontype = "callable" parametermap = "getUsercountmap"> вызовать mybatis.ges_user_count (?,?) </select>
Основная функция:
открытый класс Learn1main {public static void main (string [] args) {// mybatis configuration file string resource = "Learn/mybatis-config.xml"; // Использование Class Loader для загрузки файла конфигурации mybatis (он также загружает соответствующий файл сопоставления) inputstream is = uard1main.class.getClassloader (). GetResourCeasStream (ресурс); // Создание завода SQLSessionSessionFactory SessionFactory = new SQLSessionFactoryBuilder (). Build (IS); SQLSession Session = sessionFactory.Opensession (); Map <string, integer> parametermap = new hashmap <string, integer> (); parametermap.put («Возраст», 12); parametermap.put ("user_count", -1); session.selectone ("com.tianjunwei.learn.learn1.entity.user.count", parametermap); Integer result = parameterMap.get ("user_count"); System.out.println (результат); }}Результаты работы:
Окончательный процесс выполнения находится в DefaultResultsEthandler. Существует разница между вызовом обычного SQL и хранящимися процедурами. Выполнение операторов SQL использует CallableStatement.
// // Обработка выходного параметра // // Вызовите хранимую процедуру, чтобы вернуть результат, поместите значение результата в параметр @Override public void hareoUtputparameters (callableStatement cs), выбрасывает sqlexception {окончательный объект parameterObject = parameterHandler.getParameterObject (); Окончательный MetaObject metaparam = configuration.newMetaObject (parameterObject); Окончательный список <parametermapping> parametermappings = boundsql.getParameterMappings (); /Цикл для каждого параметра для (int i = 0; i <parametermAppings.size (); i ++) {окончательное параметрирование параметрического параметра = параметрическое значение. Get (i); // Судить шаблон параметра if (parametermappion.getmode () == parametermode.out || parametermapping.getmode () == parametermode.inout) {if (rescowest.class.equals (parametermapping.getjavatype ()) {handlerefcursoroutputparameter (refferent) cs.getobject (i + 1)) метапарам); } else {final TypeHandler <?> typeHandler = parameterMapping.getTypeHandler (); metaparam.setValue (parametermapping.getProperty (), typehandler.getResult (cs, i + 1)); }}}} private void handlerefcursoroutputparameter (ResultSet RS, параметрирование параметрирования, мета -metaobject metaparam) Throws SQLexception {try {final String resultMapid = parametermapping.getResultmapid (); Конечный результат -карт resultMap = configuration.getResultMap (resultMapid); Окончательный DefaulTresulthandler resulthandler = new Defaultresulthandler (ObjectFactory); Окончательный результат etrapper rsw = new ResultWrapper (rs, configuration); HandlerOwValues (RSW, ResultMap, Resulthandler, New Rowbounds (), NULL); metaparam.setValue (parametermapping.getProperty (), resulthandler.getResultist ()); } наконец {// Выпуск № 228 (Close Resultsets) SloserEsultset (RS); }}Выше приведено процесс вызова и эксплуатационного процесса вызова процедуры и эксплуатации анализа исходного кода Mybatis, введенный вам редактором. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!