Введение в Mybatis
Mybatis - отличная структура слоя настойчивости, которая поддерживает простые запросы SQL, сохраненные процедуры и расширенное картирование. Mybatis устраняет ручные настройки почти всех кодов JDBC и параметров и поисковой инкапсуляции набора результатов. Mybatis может использовать простые XML или аннотации для конфигурации и оригинального отображения, отображения интерфейсов и Pojos Java (простые старые объекты Java) в записи в базе данных.
1. Mybiats Foreach Tag
Foreach в основном используется в строительстве в условиях, он может итерации над коллекцией в заявлениях SQL. Атрибуты элемента Foreach в основном включают в себя элемент, индекс, коллекцию, открытый, сепаратор и закрытие. Элемент представляет псевдоним, когда каждый элемент в коллекции является итерацией. Индекс указывает имя, чтобы представить положение, до которой достигается каждая итерация во время итерационного процесса. Open представляет то, что начинается с утверждения, сепаратор представляет то, что символы используются в качестве разделителей между каждой итерацией, и закрыть представляет то, что заканчивается. Наиболее важной и наиболее подверженной ошибкам при использовании Foreach является атрибут коллекции. Этот атрибут должен быть указан, но в разных случаях значение атрибута отличается. Есть три основные ситуации:
Если пропущенное в IS единственный параметр, а тип параметра - это список, значение атрибута коллекции - список
Если передача в один параметр, а тип параметра - массив, значение свойства сбора - массив
Если внесено несколько параметров, нам нужно инкапсулировать их в карту
Конкретное использование следующего:
<INSERT ID = "INSERTBATCH" PARAMETERTYPE = "LIST"> INSERT в TSTUDENT (имя, возраст) <foreach Collection = "list" item = "item" index = "index" open = "(" close = ")" sepreator = "Союз All"> select #{item.name} как #{item.age} как b от dual </foreeace> </insert> </insert> </inset> </inset> </insert> </inset> </inset> </inset> </insert> </inset> </insert>2. mybatis executortype.batch
В Mybatis построены 3 типа Execortypes. По умолчанию проста. В этом режиме он создает новый оператор предварительной обработки для выполнения каждого оператора и представляет SQL в одной строке; в то время как режим партии повторно использует предварительные операторы и выполняет все операторы обновления в партиях. Очевидно, что пакетный режим имеет свои проблемы. Например, когда операция вставки невозможно получить самостоятельный идентификатор до отправки транзакции, что не соответствует бизнес-требованиям в определенной ситуации.
Конкретное использование следующего:
*Метод одна пружина+mybatis
// Получить SQLSession // Внедрение оригинального SQLSessionTemplate из Spring@AutowireDPrivate SQLSessionTemplate SQLSessionTemplate; // Получить новую сеанс с партией, автоматически подчиняя его в False // Если автоматическое представление установлено на True, число приставок не может быть контролируется, а последнее объединенное подчинение может привести к тому, что на переполнении памяти. sqlSessionTemplate.getSqlSessionFactory (). Opensession (executorType.batch, false); // получить mapperfoomapper = session.getmapper (foomapper.class); int size = 10000; попробуйте {for (int i = 0; i <size; i ++) {foo foo = new Foo (); foo.setName (string.valueof (System.currentTimeMillis ())); FoomApper.insert (foo); if (i % 1000 == 0 || i == size - 1) {// вручную отправлять каждые 1000, сеанс. {// Нет отправленных данных нельзя отключить session.rollback ();} наконец {session.close ();} пружина+mybatisМетод 2:
В сочетании с псевдонимом General Mapper SQL, лучше всего иметь имя пакета + имя класса
public void insertbatch (map <string, object> parammap, list <user> list) выбрасывает Exception {// Получить новый сеанс с пакетом, автоматически отправлять его в false // Если автоматическое представление установлено на True, количество представлений не может быть контролируется, а последнее объединенное представление изменяется на последнее объединенное представление, которое может вызвать переполнение памяти SQLSESSESSESSESSENTERSERSED = sqlSessionTemplate.getSqlSessionFactory (). OpenSession (executorType.batch, false); try {if (null! = list || list.size ()> 0) {int lsize = list.size (); для (int i = 0, n = list.size (); list.get (i); user.setindate ((string) parammap.get ("indate")); user.setDataDate (((String) parammap.get ("dataDate")); // Атрибуция данных Time // session.insert ("com.xx.mapper.usermapper.insert", user); // session.update ("com.xx.mapper.usermapper.updatebyprimarykeyseelective", _ Entity); session.insert ("имя + имя класса", пользователь); если (i> 0 && i % 1000 == 0) {// вручную отправлять каждые 1000, session.commit () не может быть откат после Commit; // Очистить кэш, чтобы предотвратить переполнение session.clearcache ();}}}} catch (Exception e) {// Нет отправленных данных не может быть переданы назад.Вышеуказанное - два способа вставки партии в Mybatis, представленные вам редактором (эффективная вставка). Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!