1. Прямо выполнить SQL -запрос:
1. Выдержка из файлов MAPPERS
<resultMap id = "acmodelresultmap" type = "com.izumi.instancemodel"> <result column = "exactionId" Property = "exactionId" jdbctype = "varchar" /> <result column = "instancename" свойство = "instancEname" jdbctype = "varchar" /> < /resultmap> <select Id jdbtance jdbtance jdbtance = " /> < /> < /resultmap> <selectiname" jdbctepe = " /> < /> < /resultmap> <selectiname" jdbctepe = " /> resultType = "com.izumi.instancemodel"> $ {paramsql} </select>2. Выдержка из Dao
Публичный интерфейс ineao {list <stancemodel> getInstanceModel (@param ("paramsql") string sql);}3. Что следует отметить
3.1: Параметры пропущенного метода должны следовать следующей спецификации «Выберите XXX как экземплярный, xxx as instanceName .....», в противном случае Mybatis не может автоматически превратить результат запроса в объект Java.
3.2: Разница между #{} синтаксисом и $ {} синтаксисом в файле Maperers:
По умолчанию синтаксис #{} приводит к созданию свойства MyBatis и использует параметр подготовленного стата (=?), Чтобы установить значение. Если вы хотите напрямую заменить неизменные строки в SQL, вы можете использовать $ {}.
Другими словами, когда Mybatis видит #{}, он будет думать, что вы присваиваете значения переменным в SQL, как в программировании JDBC, чтобы назначить значения для вопросов (например, Mybatis будет судить о его типе и автоматически добавляет отдельные цитаты до и после). Когда Mybatis увидит $ {}, он напрямую заменит его значением переменной без каких -либо обработки.
Поэтому при использовании $ {} вам не нужно писать атрибуты, такие как "jdbctype = varchar", как #{}.
3.3: ResultType и ResultMap
Согласно методу записи в 1, часть <srodemap> может быть удалена без использования его, потому что в следующем <SELECT> определяемая карта результата не используется, но используется ResultType.
Таким образом, мы видим, что есть два способа написать определение возвращаемого значения <select>. Одним из них является определение карты результата, а затем обратиться к этой карте результата. Другой должен напрямую использовать ResultType для указания пути класса.
2. Пактская вставка данных
1. Опыт говорит нам, что использование вставки в xxx значения (xx) (xxx) (xxx) более эффективно, чем использование вставки в значения xxx (xx), вставьте в значения xxx (xxx), вставьте в значения xxx (xxx).
2. Использование в Mybatis
2.1. Выдержка из файла MAPPERS
<INSERT ID = "INSERTBATCH"> INSERT в Студент (<Включите refiD = "base_column_list" />) значения <foreach collection = "list" item = "item" index = "index" sepreator = ","> (null,#{item.name},#{item.sex},#{item.address},#{item.telephone},#{item.tid}) </foreach> </insert>2.2. Выдержка из Дао
Публичный интерфейс ineao {public void insertbatch (@param ("list") list <toodtly> студенты); }Подробное объяснение данных пакетной вставки Mybatis
Сначала посмотрите на пакетный файл mapper.xml
<INSERT ID = "INSERTBATCH" PARAMETERTYPE = "java.Util.list"> <selectKey keyProperty = "fetchtime" order = "до" refultype = "java.lang.string"> select_ture_timestamp () </selectKey> insert in kangaiduodian (depart1, product2 UNIT, Approval_certificate, производитель, рыночная сфере, Vipprice, веб -сайт, fetch_time, productdesc) <foreach collection = "list" item = "item" index = "index" sepreator = ","> ( #{item.depart1}, #{item.depart2}, #{item.productnam #{item.img}, #{item.productspeciation}, #{item.unit}, #{item.provalcertificate}, #{item.manufacturer}, #{item.marketprice}, #{item.vipprice}, #{item.website}, #{abetchtime { #zesc}, #{ #xesc}, #00. ) </foreach> </insert>При обработке партии я обнаружил, что есть несколько проблем, которые требуют внимания.
1. Автоматически получить первичный ключ. Добавьте usegeneratedkeys = ”true” keyproperty = ”id” во вставке. Два свойства двух свойств являются недействительными и могут прервать вставку данных. Если идентификатор является самостоятельной оценкой базы данных, вы ничего не можете написать. Удалите атрибут первичного ключа в вставленном операторе и используйте его.
<selectKey keyProperty = "id" order = "перед" refultype = "java.lang.integer"> select last_insert_id () </selectKey>
Примечание: тег <selectKey> может существовать только в INSERT; Не подходит для использования <SelectKey> во время переработки партии. Лучше всего увеличить сам первичный ключ или указать его.
2. Получение времени вставки показано выше. Я использую MySQL. Пока это функция MySQL, ее можно использовать. Время вставки и первичный ключ являются одной из функций MySQL. Полем Полем