Программирование в работе интерфейса
Вообще говоря, когда мы строим классы, которые отображают интерфейсы SQL, обычно выглядит так:
public static void testbasicquery (int id) {sqlsession session = mybatisutils.getsqlsession (); try { / * * the David.mybatis.demo.ivisitoroperation.basicquery здесь должен соответствовать пространству имен в конфигурации на рисунке ниже * / посетители посетителя = (посетитель). Mybatisutils.closesession (сессия); System.out.println (посетитель); } catch (Exception e) {// todo: обрабатывать исключение}}<!-Здесь пространство имен соответствует соответствующему параметру строки, который вы передали-> <mapper namespace = "david.mybatis.demo.ivisitoroperation"> <!-Здесь Resultype соответствует псевдонимам, который вы только что указали в Node Typealias-> <Select Id = "BasicQuery" ParameterType = "int" resultype = " по id </select> </mapper>
Таким образом, если имена с обеих сторон случайно не соответствуют соответствующим процессу разработки, произойдет исключение. Чтобы избежать такой ситуации, мы можем использовать метод интерфейса для выполнения соответствующих операций. Давайте изменим эту статью ниже.
Во -первых, мы создаем новый класс Ivisitoperation под названием пакета David.mybatis.demo, указывая, что интерфейсы всех методов базы данных будут работать в будущем, как показано ниже:
Пакет david.mybatis.demo; import java.util.list; import david.mybatis.model.pagenateargs; import david.mybatis.model.visitor; public visitoroperation { /** Basic Query* / public visitor basicQuery (int id);} public void testbasiCquery (int veSsecresse (int id); Mybatisutils.getsqlsession (); try {ivisitoroperation voperation = session.getmapper (ivisitoroperation.class); Посетитель посетителя = Voperation.basicquery (id); Mybatisutils.closesession (сессия); System.out.println (посетитель); } catch (Exception e) {// todo: обрабатывать исключение}}Это сделано, поэтому нам не нужно беспокоиться о несоответствии, которое может быть результатом имен методов ручного написания.
Операция CRUD
Следующее объясняет создание операций CRUD и GetList на основе операций с одной таблицей. Чтобы создать некоторые тестовые данные, давайте сначала получим метод добавления.
Продолжайте добавить, удалить, обновить, обновить, запросить и методы интерфейса GetList в последнем классе интерфейса Ivisitoroperation, как показано ниже:
/** Базовый запрос*/ public Vitor BasicQuery (int id); /** Добавить посетителя*/ public int add (посетитель посетителя); /** Удалить посетителя*/ public int delete (int id); /** Обновление посетителя*/ public int update (посетитель посетителя); /** Запрос Посетителя*/ Public Vitator Query (INT ID); / * * Список посетителей запроса */ public list <visitor> getList ();
Для соответствующих операций CRUD вставка, обновления, удаления и выбора узлов соответственно находятся под узлом <Mapper> visitormapper.xml. Для получения подробных сведений о конфигурации, пожалуйста, обратитесь к официальному веб-сайту http://mybatis.github.io/mybatis-3/sqlmap-xml.html.
Конфигурация в этом примере заключается в следующем: используйте #{parameter_name} для передачи параметров, и, конечно, вы также можете использовать $ {parameter_name} напрямую.
В первом пути Mybatis преобразует его в параметризованную форму, например, вставьте в таблицу (имя) значения (#{name}) => Вставьте в Table (имя) значения (?) (В случае MySQL)
Последним образом Mybatis будет передавать параметры без каких -либо операций, таких как значения вставки в таблицу (имя) ($ {name}) => вставьте в таблицу (имя) значения ([значение, которое вы передали]), пропустите AA, вот AA, пропустите «AA», вот «AA».
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Mapper public "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> mapper stightspace =" david.mybatis. <!-Использование generatedKeys = "true" означает, использовать ли последовательность саморазвита, keyProperty = "id" Указывает, какой столбец-это столбец самостоятельного узора, parametertype = "Visitor" Указывает соответствующий тип, переданный в определении в интерфейсе и Ivisitorperation Class Class Resultype, указывает на возвращаемый тип, такой как результат посетителя в результате забора. Индивидуальный тип возврата является лучшим выбором для возврата сложных типов, а также является наиболее мощным оружием в mybatis-> <insert id = "add" parametertype = "vesitor" usegeneratedkeys = "true" keyproperty = "id"> вставьте в посетитель (имя, статус, createtime) </insert> <delete id = "delete" parametertype = "int"> delete из посетителя, где статус> 0 и id =#{id} </delete> <Обновление идентификатор = "Обновление" ParameterType = "Visitor"> Обновление посетителя Set name =#{name}, email =#{emaite}, status =######{id} и kstem и ud> 0; </update> <select id = "Query" parameterType = "int" reculatyPe = "Посетитель"> SELECT ID, имя, электронная почта, статус, CreateTime из посетителя, где id =#{id} и статус> 0 Порядок по идентификатору </select> <select id = "basicQuery" ParameterType = "int" receledType = "vesitor"> select * select * is visitor wher############################################## < /select> <select id = "getList" resultMap = "vitationOrrs"> <include refiD = "getListSql" /> < /select> <resultMap type = "visitor" id = "vestistorrs"> <id = "id" Property = "id" /> <result column = "name" property = name " /> <result column =" fembel ". column = "createTime" Property = "createTime"/> </resultMap> <sql id = "getListSql"> select * из посетителя, где статус> 0 </sql> </mapper>Здесь следует отметить, что идентификатор в узле операции должен соответствовать имени интерфейса в определении интерфейса, и тип параметра также должен соответствовать ему. Например, интерфейс добавлен (посетитель посетителя). Затем при настройке узла вставки, id = "add" и parametertype = "Посетитель"
В противном случае будет сообщено о соответствующем исключении. Например, если узел ID не соответствует имени интерфейса, появится следующее исключение:
Вы можете заметить, что при получении списка в файле конфигурации vitistormapper.xml вы используете ResultMap. При использовании ResultMap вы можете указать, какие поля ваши собственные карты операторов SQL, потому что иногда вам не нужно так много столбцов, поэтому вам не нужно настраивать так много карт при настройке отображения, или ваш столбец был завязан, поэтому вы не можете напрямую использовать RestulyPe = «Посетитель» для картирования, потому что метод отображения по умолчанию соответствует тому, что атрибут Наименование, в соответствии с этим. Вы также можете управлять картами, настраивая значение <treats> атрибута в рамках узла <configuration>, чтобы управлять, наносить ли карту с именованием верблюда в Javabean следующим образом.
<настройки> <настройка name = "mapunderscoretocamelcase" value = "false" /> < /pettings>
Для других конфигураций, которые изменяют Mapper, вы можете просмотреть их по адресу http://mybatis.github.io/mybatis-3/configuration.html#settings.
Для класса Mapper посетителя следующее:
<mapper namespace = "david.mybatis.demo.ivisitoroperation"> <sql id = "getListSql"> Select ID как viSitor_id, имя, электронная почта, статус, создание из посетителя, где статус> 0 </sql> <select id = "getList" resultMap = "viestorrs"> <inclate refid = "getListSql"/> </steept resectors> <! собственность. Поля в нем должны быть такими же, как и свойства, которые вы определяете в сущности. Это чувствителен к случаю, в противном случае установщик по умолчанию не найдет соответствующее свойство при назначении значений свойству. Вы можете попробовать свойство столбца, соответствующее имени набора результатов, возвращаемого оператором запроса. If an alias is given to the corresponding field, for example, id becomes visitor_id, then the corresponding column name must also correspond to --> <resultMap type="Visitor" id="visitorRs"> <id column="visitor_id" property="id" /> <result column="Name" property="name" /> <result column="Email" property="email" /> <result column="Status" property="status" /> <result Column = "createTime" Property = "createTime"/> </resultMap> </mapper>
Здесь вы также заметите, что есть узел <sql> узел. Это используется для извлечения публичных заявлений SQL или поля для повторного использования в других местах. Для других подробных инструкций, пожалуйста, обратитесь к http://mybatis.github.io/mybatis-3/sqlmap-xml.html.
Остальное - та же операция, что и только сейчас. Вы можете создать класс Demorun в демонстрационной программе для хранения различных методов испытаний, следующим образом:
Пакет David.mybatis.demo; импорт java.util.arrays; import java.util.list; import org.apache.ibatis.session.sqlsession; импорт david.mybatis.model.basicqueryargs; импорт david.mybatis.model.crud_enum; import.mybatis.model.Chatis. david.mybatis.model.pagenateargs; импортировать david.mybatis.model.visitor; импорт david.mybatis.model.website; открытый класс demorun {public static void testbasicquery (int id) {sqlsession session = mybatisutils.getsqlsession (); try { / * * the David.mybatis.demo.ivisitoroperation.basicquery здесь должен соответствовать пространству имен в конфигурации на рисунке ниже * / посетители посетителя = (посетитель). Mybatisutils.closesession (сессия); System.out.println (посетитель); } catch (Exception e) {// todo: обрабатывать исключение explyStstackTrace (); }} public static void testbasicquerybyinterfaceway (int id) {sqlsession session = mybatisutils.getsqlsession (); try {ivisitoroperation voperation = session.getmapper (ivisitoroperation.class); Посетитель посетителя = Voperation.basicquery (id); Mybatisutils.closesession (сессия); System.out.println (посетитель); } catch (Exception e) {// todo: обрабатывать исключение explyStstackTrace (); }} /** Добавить запись посетителя в партиях* / public static void addVisitors () {sqlSession session = mybatisutils.getsqlsession (); Список <visitor> посетители = arrays.aslist (новый посетитель [] {новый посетитель ("mongodb", "[email protected]"), новый посетитель ("redis", "[email protected]"), новый посетитель ("memcached", "[email protected]"), New Visitor ("Couchdb", "[email protected]"), New Visitor ("Couchd" Посетитель ("hbase", "[email protected]"), новый посетитель ("bigtable", "[email protected]"), новый посетитель ("hive", "[email protected]"), новый посетитель ("mapreduce", "[email protected]"),}); для (посетитель посетителя: посетители) {addvisitor (посетитель, сеанс); } Mybatisutils.closesession (Session); Mybatisutils.showmessages (crud_enum.list, vitestors.size ()); } /** Добавить информацию посетителя* / @suppresswarnings ("неиспользованный") частная статическая void addvisitor (посетитель посетителя, SQLSession Session) {if (session == null) session = mybatisutils.getsqlsession (); Visitoroperation voperation = session.getmapper (ivisitoroperation.class); int recordcount = voperation.add (посетитель); session.commit (); if (session == null) mybatisutils.closesession (session); Mybatisutils.showmessages (crud_enum.add, recordcount); } /** Перегрузка добавить посетителя* / public static void addvisitor (посетитель посетителя) {addvisitor (посетитель, null); } /** Удалить информацию посетителя* / public static void deleteVisitor (int id) {sqlSession session = mybatisutils.getsqlsession (); Visitoroperation voperation = session.getmapper (ivisitoroperation.class); int recordcount = voperation.delete (id); session.commit (); Mybatisutils.closesession (сессия); Mybatisutils.showmessages (crud_enum.delete, recordcount); } /** Обновление информации посетителя* / public static void updatevisitor (int id) {sqlSession session = mybatisutils.getsqlsession (); Visitoroperation voperation = session.getmapper (ivisitoroperation.class); Посетитель Посетитель = Voperation.Query (id); System.out.println («Оригинальный объект:» + Посетитель); String name = visitor.getName (); if (name.contains ("updated"))) {visitor.setname (name.substring (0, name.indexof ("updated"))); } else {visitor.setName (name + "upplyted"); } int recordCount = voperation.update (посетитель); session.commit (); Mybatisutils.closesession (сессия); Mybatisutils.showmessages (crud_enum.update, recordcount); System.out.println ("Обновление объекта:" + для посетителя); } /** Информация о посетителе запроса* / public static void QueryVisitor (int id) {sqlsession session = mybatisutils.getsqlsession (); Visitoroperation voperation = session.getmapper (ivisitoroperation.class); Посетитель Посетитель = Voperation.Query (id); Mybatisutils.closesession (сессия); Mybatisutils.showmessages (crud_enum.query, 1); System.out.println (посетитель); } /** Запросить список посетителей* / public static void QueryVisitorList () {sqlSession session = mybatisutils.getsqlsession (); Visitoroperation voperation = session.getmapper (ivisitoroperation.class); Список <visitor> посетители = voperation.getlist (); для (посетитель посетителя: посетители) {System.out.println (посетитель); } Mybatisutils.closesession (Session); Mybatisutils.showmessages (crud_enum.list, vitestors.size ()); }} Класс DeMorun запускает простой односторонний CRUD, и демонстрация завершена.