Введение в Mybatis
Mybatis - это проект с открытым исходным кодом Apache. В 2010 году этот проект был перенесен от Apache Software Foundation в Google Code и был переименован в Mybatis. Мигрировал в GitHub в ноябре 2013 года.
Термин ibatis происходит из комбинации «Интернета» и «Abatis», и является основой на базирующейся на основе стойки на основе Java. Ибатис обеспечивает структуры уровня стойкости, включая карты SQL и объекты доступа к данным (DAO)
1. Требуемый пакет JAR
Здесь мы обсуждаем использование Mybatis отдельно, просто поместите пакет Mybatis-xxxjar.
Если вы используете Maven для создания проекта, вам необходимо поместить следующую конфигурацию в зависимости pom.xml:
<Depective> <groupid> org.mybatis </GroupId> mybatis </artifactid> <sersion> 3.2.2 </version> </depertive>
В настоящее время компания использует 3.2.2, и вы можете поместить номер версии в соответствии со своим собственным пакетом JAR.
Если вы интегрируете с соответствующей структурой, вам необходимо поместить пакет интеграции. Например, наша компания использует Mybatis для интеграции с весной.
Вам также необходимо добавить пакет Mybatis-Spring-xxx.jar и определить на основе реальной ситуации. Конечно, пакеты JAR Dabase Driver также являются незаменимыми.
2. Стройте SQLSessionFactory из XML
Каждое приложение на основе Mybatis сосредоточено на экземпляре SQLSessionFactory.
Экземпляр SQLSessionFactory может быть получен через SQLSessionFactoryBuilder.
SQLSessionFactoryBuilder может создать экземпляр SQLSessionFactory из файла конфигурации XML или экземпляра конфигурации, предварительной,.
Очень просто создать экземпляр SQLSessionFactory из XML -файла. Рекомендуется использовать файл ресурса в рамках ClassPath для конфигурации.
Однако его также можно настроить с использованием любого экземпляра InputStream, включая путь файла в форме строки или пути файла в форме файла: // url.
Mybatis содержит класс инструментов, называемый ресурсами, который содержит некоторые практические методы, которые облегчают загрузку файлов ресурсов из ClassPath или других мест.
Например:
String resource = "mybatis-config.xml"; inputStream IS = resources.getResourceasStream (ресурс); sqlSessionFactory sqlSessionFactory = new SQLSessionFactoryBuilder (). Build (IS);
Файл конфигурации XML (конфигурация XML) содержит настройки ядра для системы Mybatis, включая источник данных для получения экземпляра подключения базы данных (DataSource)
и менеджер транзакций (TransactionManager), который определяет объем и режим управления транзакций. Файл конфигурации будет подробно обсуждаться позже.
Например:
<!-? xml version = "1.0" Encoding = "utf-8"?-> <configuration> <среда default = "разработка"> <среда идентификатор = "разработка"> <transactionManager type = "jdbc"> <dataSource type = "Booled"> <Property name = "Driver" value = "mysql.jdbc.driver"> <property name = "rame" value = "mysql.jdbc.driver" value="jdbc:mysql://192.168.200.12:3306/test_mybatis"><property name="username" value="root"><property name="password" value="root123"></property></property></property></datasource></transactionmanager></environment></environments><mappers><!-- Register the Usermainmapper.xml файл. USERMAINMAPPER.XML расположен в пакете com.lanhuigu.mybatis.map, поэтому ресурс написан как com/lanhuigu/mybatis/map/usermainmapper.xml-> <mapper resource = "com/lanhuigu/mybatis/map/usermapper.xmarcer> <//mapperer> <//maybatis>
Тело элемента среды содержит конфигурацию управления транзакциями и объединения соединений. Элемент Mappers содержит набор Mapper Mappers (файлы XML этих картинов содержат код SQL и информацию о определении отображения).
3. Получить SQLSession от SQLSessionFactory
Теперь, когда у нас есть SQLSessionFactory, мы можем получить от него экземпляр SQLSession. SQLSession полностью содержит все методы, необходимые для выполнения команд SQL в базе данных.
Вы можете напрямую выполнить карту SQL -операторы через экземпляр SQLSession. Например:
SqlSessionFactory sqlSessionFactory = null; // xml build sqlSessionFactory Factory Encem SQLSessionFactoryBuilder (). Build (IS); SESSION = SQLSessionFactory.Opensession (); пользователь пользователь = session.selectone ("com.lanhuigu.mybatis.map.usermainmapper.queryusermainbyid", 1); System.out.println (user.getusermanme (); Таким образом, нет проблем в выполнении картирования, мы также можем выполнять картирование более кратким способом.
Используйте интерфейс, который может разумно описать параметры и возвращаемые значения для данного оператора (например, usermainmapper.class),
Вы можете не только выполнить более четкий и безопасный код типа, но вам не нужно беспокоиться о склонных к ошибкам строковых литералов и составов. Например:
SQLSession Session = SQLSessionFactory.Opensession (); USERMAINMAPPER USERMAINMAPPER = SESSION.GETMAPPER (USERMAINMAPPER.CLASS); пользователь пользователь = USERMAINMAPPER .QUERYUSERMAINBYID (1);
4. Пример
Легко запутаться, просто читая, но не практикуя. Посмотрите на примеры и вернитесь, чтобы прочитать документ, возможно, эффект будет лучше.
Приготовьте пакет JAR:
mybatis-3.2.2.jar (mybatis)
MySQL-Connector-Java-5.1.21.jar (драйвер базы данных)
JUNIT-4.4.jar (тест, не хочу использовать этот JUNIT, вы можете использовать основной метод для его проверки)
Структура проекта:
База данных:
Создать таблицу `t_user_main` (` f_id` int (11) не null, `f_username` varchar (20) null по умолчанию,` f_age` int (3) null, первичный ключ (`f_id`)) Engine = myisam default charset = latin1; inft int _main values (1, 'testmabatis' 25);
Mybatis 'XML Configuration-Mybatis-config.xml:
<!-? xml version = "1.0" Encoding = "utf-8"?-> <configuration> <среда default = "разработка"> <среда идентификатор = "разработка"> <transactionManager type = "jdbc"> <dataSource type = "Booled"> <Property name = "Driver" value = "mysql.jdbc.driver"> <property name = "rame" value = "mysql.jdbc.driver" value="jdbc:mysql://192.168.200.12:3306/test_mybatis"><property name="username" value="root"><property name="password" value="root123"></property></property></property></datasource></transactionmanager></environment></environments><mappers><!-- Register the Usermainmapper.xml файл. USERMAINMAPPER.XML расположен в пакете com.lanhuigu.mybatis.map, поэтому ресурс написан как com/lanhuigu/mybatis/map/usermainmapper.xml-> <mapper resource = "com/lanhuigu/mybatis/map/usermapper.xmarcer> <//mapperer> <//maybatis>
User.java:
Пакет com.lanhuigu.mybatis.entity; import java.io.serializable; Пользовательский класс реализует Serializable {private Static Long Long SerialVersionUID = -3412068097348759984L; частный INTEGER ID; Private String USERAME; Private Integer Age; Public Integer getId () {) {return Id; id) {this.id = id;} public String getUsername () {return username;} public void setUsername (string username) {this.username = username;} public integer getage () {return Age;} public void setage (integer age) {this.age =}}}}}}}}}}Usermainmapper.xml:
<!-? xml version = "1.0" Encoding = "UTF-8"?-> <!-Укажите уникальное пространство имен для этого Mapper. Значение пространства имен обычно устанавливается на имя пакета + Удалить имя файла суффикса файла карты SQL. Это может гарантировать, что значение пространства имен является уникальным. Например, namespace = "com.lanhuigu.mybatis.map.usermainmapper" is com.lanhuigu.mybatis.map (имя пакета) + usermainmapper (usermainmapper.xml файл удаляется)-> <mapper namepace = "com.lanhuigu.mybatis.mapainmain! Оператор SQL В теге SELECT установите атрибут ID of Select Tag to QueryUserMainByID, значение атрибута идентификатора должно быть уникальным, а атрибут параметратип не может быть использован повторно, чтобы указать тип параметра, используемый в запросе. Атрибут ResultType указывает тип набора результатов, возвращаемый Query resultype = "com.lanhuigu.mybatis.entity.user" означает инкапсулирование результата запроса в объект класса пользователя возврата в пользовательский класс, который является классом объекта, соответствующим таблице пользователей-> <select = "QueryUsermainbyId", который является элементом "int" int " resultType = "com.lanhuigu.mybatis.entity.user"> Select F_ID ID, F_USERNAME USERNAME, F_AGE AGE OF T_USER_MAIN, где F_ID = #{ID} </selet> </mapper>Mybatistest.java тестовый код:
пакет com.lanhuigu.mybatis; import java.io.ioexception; import java.io.inputstream; import org.apache.ibatis.io.resources; импорт org.apache.ibatis.session.sqlsession; импорт org.apache.ibatis.session.sessionfactory; org.apache.ibatis.session.sqlsessionFactoryBuilder; импорт org.junit.test; импорт com.lanhuigu.mybatis.entity.user; открытый класс mybatistest {@testpublic void testmybatis () throws ioexception {sqlsessionFactory sqlFactory = null; SQLSessionFactory Factory Extance SqlSession Session = null; // Получить объект sqlSession try {//1.mybatis pail file файла файла, который размещен в ClassPath, что эквивалентно String resource = "mybatis-config.xml"; // 2. Прочитайте файл конфигурации mybatis и создайте экземпляр SQLSessionFactory Factory // ====== 2.1 Используйте загрузчик класса для загрузки файла конфигурации mybatis (он также загружает связанный файл отображения) // inputStream IS = mybatistest.class.getClassLoader (). GetResourceStream (resource); New SQLSessionFactoryBuilder (). Build (IS); // ====== 2.2 Используйте класс ресурсов, предоставленный MyBatis для загрузки файла конфигурации MyBatis (он также загружает связанный файл отображения) // Reader = resourds.getResourCeasReader (ресурс); // Создание SQLSessionFactory Factory // sqlSessionFactory = new SQLSessionFactoryBuilder (). Build (Reader); // ===== 2.3 Используйте класс ресурсов, предоставленные MyBatis для загрузки MyBatis на конфигурационном файле. SQLSessionFactoryBuilder (). Build (IS); // 3. Создать SQLSessionSession, который может выполнять SQL в файле отображения = sqlSessionFactory.opensession ();/*** Строка идентификации для сопоставления SQL:* com.lanhuigu.mybatis.map.usermainmapper - это значение атрибута пространства имен query -strimemapper. Выберите тег файла usermainmapper.xml. Через значение атрибута идентификатора тега SELECT * SQL, который должен быть выполнен, может быть найден через комбинацию этих двух. */// Выполните запрос и верните уникальный пользовательский объект. Примечание. User user = session.selectone ("com.lanhuigu.mybatis.map.usermainmapper.queryusermainbyid", 1); System.out.println (user.getusername ());} наконец {session.close ();}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}Вывод консоли:
Для приведенного выше примера в тестовом коде:
User user = session.selectone ("com.lanhuigu.mybatis.map.usermainmapper.queryusermainbyid", 1); System.out.println (user.getUsername ());Этот код очень неприятно использовать? Мы сказали, что есть более прямой способ:
Добавьте интерфейс отображения к карте структуры проекта:
Пакет com.lanhuigu.mybatis.map; import com.lanhuigu.mybatis.entity.user; public interface usermainmapper {public user QueryUserMainbyId (int id);}В то же время измените тестовый код следующим образом:
пакет com.lanhuigu.mybatis; import java.io.ioexception; import java.io.inputstream; import org.apache.ibatis.io.resources; импорт org.apache.ibatis.session.sqlsession; импорт org.apache.ibatis.session.sessionfactory; org.apache.ibatis.session.sqlSessionFactoryBuilder; import org.junit.test; import com.lanhuigu.mybatis.entity.user; импорт com.lanhuigu.mybatis.map.usermainmapper; public class mybatistest {@testpublic voidsex voidsexexexexexexeex; {SqlSessionFactory sqlSessionFactory = null; // xml build sqlSessionFactory Factory экземпляр SQLSession Session = null; // Получить объект SQLSession Try {//1.mybatis configuration pail-configuration, который находится в классе, который эквивалентен на строгий ресурс = "mybatis-config.xml";//2. Прочитайте файл конфигурации mybatis и создайте экземпляр SQLSessionFactory Factory // ====== 2.1 Используйте загрузчик класса для загрузки файла конфигурации mybatis (он также загружает связанный файл отображения) // inputStream IS = mybatistest.class.getClassLoader (). GetResourceStream (resource); New SQLSessionFactoryBuilder (). Build (IS); // ====== 2.2 Используйте класс ресурсов, предоставленный MyBatis для загрузки файла конфигурации MyBatis (он также загружает связанный файл отображения) // Reader = resourds.getResourCeasReader (ресурс); // Создание SQLSessionFactory Factory // sqlSessionFactory = new SQLSessionFactoryBuilder (). Build (Reader); // ===== 2.3 Используйте класс ресурсов, предоставленные MyBatis для загрузки MyBatis на конфигурационном файле. SQLSessionFactoryBuilder (). Build (IS); // 3. Создать SQLSessionSession, который может выполнять SQL в файле отображения = sqlSessionFactory.opensession ();/*** Строка идентификации для сопоставления SQL:* com.lanhuigu.mybatis.map.usermainmapper - это значение атрибута пространства имен query -strimemapper. Выберите тег файла usermainmapper.xml. Через значение атрибута идентификатора тега SELECT * SQL, который должен быть выполнен, может быть найден через комбинацию этих двух. */// Выполните запрос и верните уникальный пользовательский объект. Примечание. 1); System.out.println (user.getusername ());*/usermainmapper usermainmapper = session.getmapper (usermainmapper.class); user user = usermainmapper.queryusermainbyid (1); System.out.println (user.getusername (); Измените предыдущую часть запроса на:
Usermainmapper usermainmapper = session.getmapper (usermainmapper.class); пользователь пользователь = usermainmapper.queryusermainbyid (1);
Используйте интерфейс, который может разумно описать параметры и возвращаемые значения для данного оператора (например, usermainmapper.class),
Вы можете не только выполнить более четкий и безопасный код типа, но вам не нужно беспокоиться о склонных к ошибкам строковых литералов и составов.
Запустите тестовый код, и эффект такой же.
UserMainMapper Местоположение интерфейса:
Поскольку мы добавили интерфейс, mybatis-config.xml может изменить конфигурацию для части Mapper и напрямую отобразить файл пакета, где находится интерфейс UsermainMapper:
Это
Изменить на
Полная конфигурация заключается в следующем, и вы можете проверить ее, запустив тестовый код. Эта практика легче поддерживать и управлять картами единым образом:
<!-? xml version = "1.0" Encoding = "utf-8"?-> <configuration> <среда default = "разработка"> <среда идентификатор = "разработка"> <transactionManager type = "jdbc"> <dataSource type = "Booled"> <Property name = "Driver" value = "mysql.jdbc.driver"> <property name = "rame" value = "mysql.jdbc.driver" value="jdbc:mysql://192.168.200.12:3306/test_mybatis"><property name="username" value="root"><property name="password" value="root123"></property></property></property></datasource></transactionmanager></environment></environments><mappers><!-- Register the Usermainmapper.xml файл. UserMainMapper.xml расположен в пакете com.lanhuigu.mybatis.map, поэтому ресурс написан как com/lanhuigu/mybatis/map/usermainmapper.xml-> <!-<mapper resource = "com/lanhuigu/mybatis/mapper/mapper> name = "com.lanhuigu.mybatis.map"> </package> </mappers> </configuration>
Как указано выше, мы можем видеть, что независимо от того, как мы играем, SQL все еще на карту в UsermainMapper.xml?
Эта реализация уникальна? Мне нужно использовать XML?
Конечно, нет. Если ваш код выше изменен и успешно протестирован, тогда давайте сделаем последнюю модификацию.
Вместо использования usermainmapper.xml для реализации отображения мы используем аннотации Java для реализации отображения.
Основной модификацией является интерфейс usermainmapper.java, добавляя новый метод QueryusermainbyIdnew и использование аннотаций для реализации картирования
Mybatis саморезоливающее картирование интерфейса.
Модифицированный usermainmapper.java interface:
пакет com.lanhuigu.mybatis.map; import org.apache.ibatis.annotation.param; import org.apache.ibatis.annotation.select; импорт com.lanhuigu.mybatis.entity.user; public usermainmapper {/*** xml*/public uer QueryUsermain; Аннотация*/@select ("select f_id id, f_username username, f_age age from t_user_main, где f_id = $ {id}") общедоступный пользователь QueryUserMainbyIdnew (@param ("id") int id);};};};};};};};};};};}; Модифицированный тестовый код, запустите его следующими способами:
пакет com.lanhuigu.mybatis; import java.io.ioexception; import java.io.inputstream; import org.apache.ibatis.io.resources; импорт org.apache.ibatis.session.sqlsession; импорт org.apache.ibatis.session.sessionfactory; org.apache.ibatis.session.sqlSessionFactoryBuilder; import org.junit.test; import com.lanhuigu.mybatis.entity.user; импорт com.lanhuigu.mybatis.map.usermainmapper; public class mybatistest {@testpublic voidsex voidsexexexexexexeex; {SqlSessionFactory sqlSessionFactory = null; // xml build sqlSessionFactory Factory экземпляр SQLSession Session = null; // Получить объект SQLSession Try {//1.mybatis configuration pail-configuration, который находится в классе, который эквивалентен на строгий ресурс = "mybatis-config.xml";//2. Прочитайте файл конфигурации mybatis и создайте экземпляр SQLSessionFactory Factory // ====== 2.1 Используйте загрузчик класса для загрузки файла конфигурации mybatis (он также загружает связанный файл отображения) // inputStream IS = mybatistest.class.getClassLoader (). GetResourceStream (resource); New SQLSessionFactoryBuilder (). Build (IS); // ====== 2.2 Используйте класс ресурсов, предоставленный MyBatis для загрузки файла конфигурации MyBatis (он также загружает связанный файл отображения) // Reader = resourds.getResourCeasReader (ресурс); // Создание SQLSessionFactory Factory // sqlSessionFactory = new SQLSessionFactoryBuilder (). Build (Reader); // ===== 2.3 Используйте класс ресурсов, предоставленные MyBatis для загрузки MyBatis на конфигурационном файле. SQLSessionFactoryBuilder (). Build (IS); // 3. Создать SQLSessionSession, который может выполнять SQL в файле отображения = sqlSessionFactory.opensession ();/*** Строка идентификации для сопоставления SQL:* com.lanhuigu.mybatis.map.usermainmapper - это значение атрибута пространства имен query -strimemapper. Выберите тег файла usermainmapper.xml. Через значение атрибута идентификатора тега SELECT * SQL, который должен быть выполнен, может быть найден через комбинацию этих двух. */// Выполните запрос и верните уникальный пользовательский объект. Примечание. 1); System.out.println (user.getUsername ());*//*usermainmapper usermainmapper = session.getmapper (usermainmapper.class); user user = usermainmapper.queryusermainbyid (1); system.out.println (user.getusermanm session.getmapper (usermainmapper.class); user user = usermainmapper.queryusermainbyidnew (1); system.out.println (user.getusername ());} наконец {session.close ();}}}Выше приведено полная коллекция введения Mybatis (2), представленная вам редактором. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!