Позвольте мне кратко представить вам Mybatis
Mybatis - отличная структура слоя настойчивости, которая поддерживает простые запросы SQL, сохраненные процедуры и расширенное картирование. Mybatis устраняет ручные настройки почти всех кодов JDBC и параметров и поисковой инкапсуляции набора результатов. Mybatis может использовать простые XML или аннотации для конфигурации и оригинального отображения, отображения интерфейсов и Pojos Java (простые старые объекты Java) в записи в базе данных.
Эта статья на самом деле является кратким изложением операции Java Oracle Type Xmltype Резюме 2: Использование Mybatis.
Mybatis реализует пользовательский конвертер, который очень просто. Его основные шаги разделены на три шага. Здесь мы принимаем эксплуатационные типы XMLTYPE в качестве примера.
Первый шаг
Создайте новый класс преобразования для реализации интерфейса TypeHandler. Дженарики интерфейса указывают тип параметра, и, если не указано, это объект:
Общедоступный класс Xmltypetypehandler реализует TypeHandler <string>
Этот интерфейс имеет следующие 4 метода:
public void setParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) public String getResult(ResultSet rs, String columnName) throws SQLExceptionpublic String getResult(ResultSet rs, int columnIndex) throws SQLExceptionpublic String getResult(CallableStatement cs, int columnIndex) throws SQLException
Функция метода должна пониматься по имени. SetParameter - это операция при прохождении параметров. Код, который необходимо обработать до того, как параметры будут переданы в базу данных, может быть записан в этом методе. Остальные три - это методы получения результата запроса. После получения результата запроса JDBC он может быть преобразован в любой тип, который вы хотите.
Шаг 2
В Mapper-Config зарегистрируйте внедренный класс преобразователя, где тип, который может указать jdbctype, четко определен в классе перечисления Mybatis org.apache.ibatis.type.jdbctype. Это не может быть значением, отличным от перечисления, в противном случае возникнет ошибка. Здесь, поскольку перечисление не имеет нуждающегося в том, что тип Xmltype он указан как неопределенный. (Вы также не можете указать конкретные типы. Вы можете использовать TypeHandler для указания конкретных классов при использовании):
<TypeHandlers> <typeHandler javatype = "string" jdbctype = "undefined" handler = "com.tyyd.dw.context.xmltypetypehandler"/> </typehandlers>
Шаг 3
Используйте конвертер типа в файле отображения Mapper:
Вставьте в значения t_content (<incluct refid = "fullcolumns"/>) (#{ControlId, jdbctype = bigint},#{xmlfile, javatype = string, jdbctype = undefined, typehandler = com.tyyd.dw.context.xmltypetypehandler},#{drmfile, jdbctype = blob})Обратите внимание на входящие параметры XMLFILE, указав Javatype, JDBCTYPE и TypeHandler, указывая, какой тип процессора мы хотим использовать. Конечно, вы можете указать только один из них, но существование этого элемента должно быть уникальным. Если несколько точно одинаковы, а спецификация не ясна, Mybatis вызовет ошибку, потому что она не может различить.
На этом этапе был реализован пользовательский конвертер типа Mybatis. Следует отметить, что типовый процессор, указанный выше, работает только при вставке данных. Если вы хотите использовать процессор пользовательского типа во время запроса, вам необходимо указать его в тегах атрибутов в карте результата. Имена и методы использования тегов Javatype, Jdbctype и Typehandler одинаковы, поэтому я не буду повторять их здесь.
Прикрепите полный код преобразователя типа. Потому что, когда должен быть запросил тип XMLType, вы можете использовать XMLType.getClobval () базы данных, чтобы непосредственно возвращать в качестве строки для работы, поэтому возвращаемые методы не были обработаны специально. (Вы также можете использовать функцию xmltype.getStringVal () для возврата строки, но во время фактического использования обнаруживается, что когда поле null, getStringVal () будет иметь ошибку ORA-06502: числовые или значения ошибки: буфер символов слишком мал, getClobval () не будет иметь ошибки, поэтому он рекомендуется использовать getClobval ().)
/*** oracle sys.xmltype Тип пользовательского процессора** Пользователь: liyd* Дата: 13-12-27* Время: 4:53 вечера*/public class xmltypetypehandler реализует тип-индлер <string> {@overridepublic void setparamet Из создания xmltype, когда необходимо нуль, если (stringutils.isnotblank (parameter)) {DelegatingConnection Connection = (DelgatingConnection) ps.getConnection (). getMetAdata (). getConnection (); xmltype xmltype = xmltype.createxmle (connection.getlegate параметр); ps.setObject (i, xmltype);} else {ps.setString (i, null);}}@overridepublic string getResult (ResultSet rs, StringName) Throws Sqlexpect rs.getString (columnName);}@overdePublic String getResult (ResultSet rs, int columnIndex) throws sqlexception {return rs.getString (columnIndex);}@replypublic string getResult (callableStatement cs, int colunindex) throus sqlegeceptВыше приведено метод реализации типового отдела для Mybatis для реализации настраиваемого конвертера типа TypeHandler. Я надеюсь, что это будет полезно для всех. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит всем вовремя. Большое спасибо за вашу поддержку сайту wulin.com!