Предыдущий ArticlemyBatis введение Учебное пособие по обучению (I) - В Mybatis Quick Start мы говорили о том, как использовать Mybatis для запроса данных в таблице пользователей, что является предварительным введением в Mybatis. Сегодня мы объясним, как использовать Mybatis для выполнения операций CRUD в таблице пользователей. Прежде чем перейти к теме, я добавлю несколько базовых знаний о Mybatis и Crud.
Что такое mybatis?
Mybatis - отличная структура слоя настойчивости, которая поддерживает простые запросы SQL, сохраненные процедуры и расширенное картирование. Mybatis устраняет ручные настройки почти всех кодов JDBC и параметров и поиск наборов результатов. Mybatis может использовать простые XML или аннотации для конфигурации и оригинального отображения для карты интерфейсов и Pojos Java (простые старые объекты Java) в записи в базе данных.
Mybatis скачать: https://github.com/mybatis/mybatis-3/releases
Crud означает
CRUD относится к аббревиатуре первых букв нескольких слов при выполнении обработки расчетов. В основном он используется для описания основных рабочих функций базы данных или уровня стойкости в программных системах.
Переходя к вопросу, тестовая среда, используемая в этой статье, является тестовой средой в предыдущей статье.
1. Используйте Mybatis для выполнения операций CRUD на таблицах - реализация на основе XML
1. Определите картирование SQL -картирования XML -файла
Содержимое файла usermapper.xml следующее:
<? xml version = "." Encoding = "utf-"?> <! Doctype Mapper public "-// mybatis.org//dtd Mapper .//en" "http://mybatis.org/dtd/mybatis-mapper.dtd">! Значение пространства имен обычно устанавливается на имя файла пакета + SQL Map Имя, так что значение пространства имен можно было гарантировать уникально. Например, namespace = "me.gacl.mapping.usermapper" Is me.gacl.mapping (имя пакета) + usermapper (usermapper.xml File Suffix)-> <mapper namespace = "me.gacl.mapping.usermapper"> <!-написать запрос sql. Уникальный, а атрибут параметратип не может быть использован повторно, чтобы указать тип параметра, используемый в запросе. Атрибут ResultType указывает тип набора результатов, возвращаемый Query resultype = "me.gacl.domain.user" означает инкапсулирование результата запроса в объект класса пользователя возврата в класс пользователя, который является классом объекта, соответствующим таблице пользователей-> <! resultType = "me.gacl.domain.user"> select * из пользователей, где id =#{id} </select> <!-Создать пользователь (create)-> <INSERT ID = "AddUser" ParameterType = "me.gacl.domain.user"> insert in users (name, age) values (#{name},#{age}) </remert> </remort> </remort> </remort> </remort> </remort> </remort> </remort> </remort> </remert> </remert> </remert> </remert> --><delete id="deleteUser" parameterType="int">delete from users where id=#{id}</delete><!-- Modify user (Update) --><update id="updateUser" parameterType="me.gacl.domain.User">update users set name=#{name},age=#{age} where id=#{id}</update><!-- Запросите всех пользователей-> <select id = "getallusers" reculatype = "me.gacl.domain.user"> select * of users </select> </mapper> Код класса модульного теста выглядит следующим образом:
Пакет me.gacl.test; import java.util.list; import me.gacl.domain.user; import me.gacl.util.mybatisutil; import org.apache.ibatis.session.sqlsession; импорт org.junit.test; public class -crudbyxmlmapper; sqlSession = mybatisutil.getSqlSession (false); sqlSession sqlSession = mybatisutil.getsqlsession (true);/*** map sql идентификационная строка,* me.gacl.mapping.usermapper - это значение атрибута идентификатора идентификатора идентификатора. ярлык. Через значение атрибута идентификатора тега вставки вы можете найти SQL для выполнения*/string atportion = "me.gacl.mapping.usermapper.adduser"; // map sql идентификационная строка user user user user (); user.setname ("Lonely и canglang"); setage ();//выполнять операцию insert int int int sqlsession.insert (оператор, пользователь); // вручную отправлять транзакции // sqlsession.commit (); // После выполнения SQL с SQLSession вам необходимо закрыть sqlSessionsqlSession.Close (); System.out.println (retresult);}@testpublic void testupDate () {sqlSession sqlSession = mybatisutil.getSqlSession (true);/*** Map SQL String String,* me.gacl.mapping.usermapper - это значение Iment.Paue Pilebure. Значение атрибута тега обновления. SQL, который будет выполнен, может быть найден через значение атрибута ID тега обновления. */String atportion = "me.gacl.mapping.usermapper.updateUser"; // отображение строки SQL ID string user user = new user (); user.setid (); user.setname ("lonely canglang"); user.setage (); // выполнить операцию модификации int retresult = sqlsession.update (anperation user); Чтобы закрыть sqlsession.close (); system.out.println (retresult);}@testpublic void testdelete () {sqlsession sqlsession = mybatisutil.getsqlsession (true);/*** map Sql. файл usermapper.xml, * deleteuser - это значение атрибута идентификатора тега Delete. SQL, который должен быть выполнен, может быть найден через значение атрибута идентификатора TAG DELETE TAG*/string atportion = "me.gacl.mapping.usermapper.deleteuser"; // map sql идентификационная строка // выполнить операцию удаления int retresult = sqlsession.delet SqlSessionSqlSession.Close (); System.out.println (retresult);}@testpublic void testgetgetall () {sqlsession sqlsession = mybatisutil.getsqlsession ();/*** map string intribo file usermapper.xml, * getallusers - это значение атрибута идентификатора тега SELECT. Через значение атрибута идентификатора Tag Select вы можете найти SQL для выполнения*/String оператора для выполнения = "me.gacl.mapping.usermapper.getallusers"; // Картирование строки идентификации SQL // выполнение запросов и автоматически инкапсулирует результаты Query (пользователь> return> lStusers = seclSession. SQLSession выполнить SQL, вам нужно закрыть sqlSessionsQlSession.Close (); System.out.println (lstusers);}} 2. Используйте Mybatis для выполнения операций CRUD на таблицах - реализация на основе аннотаций
1. Определите интерфейс для картирования SQL
Код интерфейса Usermapperi заключается в следующем:
пакет me.gacl.mapping; импорт java.util.list; import me.gacl.domain.user; import org.apache.ibatis.annotation.delete; импорт org.apache.ibatis.annotation.insert; импорт org.apache.ibatis.annotation.select; import org.apache.ibatis.annotation. Определите интерфейс для отображения SQL, укажите SQL, который будет выполнен с использованием аннотаций*/public interface usermapperi {// Использовать аннотации @insert, чтобы указать SQL, который будет выполняться методом add @insert («Вставка в пользовательские значения (имя, возраст) ( #{name}, #{age})») SQL, который будет выполнен методом deleteByID@DELETE ("DELETE USERSE OR ID ID =#{id}") public int deleteById (int id); // Использование аннотации @Update для указания sql для выполнения метода обновления@update ("Обновление пользователей set name =#name} age#{age} jude###z#zed zeber") @Select Annotation, чтобы указать SQL, который будет выполняться методом GetByID @SELECT * из пользователей, где id =#{id} ") Общественный пользователь GetById (INT ID); // Использовать аннотацию @Select, чтобы указать SQL для выполнения методом GetAll @Select (« SELECT * Off Users ») Следует отметить, что нам не нужно писать конкретный код класса реализации для интерфейса Usermapperi. Этот конкретный класс реализации динамически построен Mybatis, и нам нужно только использовать его напрямую.
2. Зарегистрируйте этот интерфейс отображения в файле conf.xml
<? xml version = "." Encoding = "utf-"?> <! Конфигурация Doctype public "-// mybatis.org//dtd config .//en" "http://mybatis.org/dtd/mybatis--config.dtd"> configuration> функции Default =" Development "> <Envervatation Id ide"> <> "developmentmanber-transactarmarmangrammarmanber> <>" jeplectmanber-transactarman /><!-- Configure database connection information--><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver" /><property name="url" value="jdbc:mysql://localhost:/mybatis" /><property name="username" value="root" /><property name="password" value="XDP" /> </dataSource> </ervenery> </erviness> <mappers> <!- Зарегистрируйте файл usermapper.xml. Usermapper.xml расположен в пакете me.gacl.mapping, поэтому ресурс написан как Me/Gacl/Mapping/usermapper.xml-> <mapper resource = "me/gacl/mapper/usermapper.xml"/> <!-Регистрация интерфейса картирования usermapper-> <mapper // mappers> </> <!
Код класса модульного тестирования выглядит следующим образом:
Пакет me.gacl.test; import java.util.list; import me.gacl.domain.user; импорт me.gacl.mapping.usermapperi; импортировать me.gacl.util.mybatisutil; импорт org.apache.ibatis.session.sqlsession; import org.junit.test; void testAdd () {sqlSession sqlSession = mybatisutil.getsqlsession (true); // Получить объект класса реализации границы интерфейса Usermapperi. Объект класса реализации интерфейса Usermapperi динамически построен SqlSession.getMapper (usermapperi.class). Usermapperi mapper = sqlsession.getmapper (usermapperi.class); user user = new user (); user.setname ("userxdp"); user.setage (); int add = mapper.add (user); // после использования sqlSession для выполнения sql, вам нужно закрыть sqlsessionsqlessessessessessessessessessessessessessessessessessessessessessessessessestessession. System.out.println (add);}@testpublic void testupDate () {sqlSession sqlSession = mybatisutil.getSqlSession (true); // Получить объект класса реализации интерфейса UserMapperi. Объект класса реализации интерфейса Usermapperi динамически построен SQLSession.getMapper (usermapperi.class) usermapperi mapper = sqlsession.getmapper (usermapperi.class); User user = new user (); user.setid (); user.setname ("long lang_xdp"); user.setage (); // выполнить операцию модификации int retresult = mapper.update (user); // после использования sqlsession, вам необходимо закрыть sqlsessionqlsession.close (); testDelete () {sqlSession sqlSession = mybatisutil.getSqlSession (true); // Получить объект класса реализации интерфейса UserMapperi. The implementation class object of the UserMapperI interface is dynamically constructed by sqlSession.getMapper(UserMapperI.class) UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);//Execute the delete operation int retResult = mapper.deleteById();//After using SqlSession to execute SQL, you need to close SqlSessionSqlSession.Close (); System.out.println (retresult);}@testpublic void testgetuzer () {sqlsession sqlsession = mybatisutil.getsqlsession (); // Получить объект класса реализации интерфейса Usermapperi. Объект класса реализации интерфейса usermapperi динамически построен с помощью sqlsession.getmapper (usermapperi.class) usermapperi mapper = sqlsession.getmapper (usermapperi.class); // execute Query Operations и автоматически инкапуляция Query ater return user user user.getbyd (); Вам нужно закрыть sqlSessionsqlSession.close (); System.out.println (user);}@testpublic void testgetgalall () {sqlsession sqlsession = mybatisutil.getsqlsession (); // Получить объект класса реализации интерфейса Usermapperi. Объект класса реализации интерфейса usermapperi динамически построен с помощью sqlsession.getmapper (usermapperi.class) usermapperi mapper = sqlsession.getmapper (usermapperi.class); // Выполнить операцию запроса и автоматически инкапсулировать результаты Query в списке <пользователь> и возвращаемый <пользователь> lstusers = mappper. SQL, используя SQLSession, вам необходимо закрыть sqlSessionsQlSession.Close (); System.out.println (lstusers);}} Используемый код класса инструмента mybatisutil используется следующим образом:
Package me.gacl.util; импорт java.io.inputstream; import org.apache.ibatis.session.sqlsession; import org.apache.ibatis.session.sqlsessionFactory; импорт org.apache.ibatis.session.sqlsessionFactory; import org.apache.ibatis.session.sessionfactoryblacrybureblacryblactory; Mybatisutil {/*** get sqlSessionFactory*@return sqlSessionFactory*/public static sqlSessionFactory getSqlSessionFactory () {String resource = "conf.xml"; inputStream is = mybatisutil.class.getclassloader (). SQLSessionFactoryBuilder (). Build (IS); возврат фабрики;}/*** Get SQLSession* @return SQLSession*/public static sqlSession getSqlSession () {return getSqlSessionFactory (). Транзакция после выполнения SQL* false указывает, что созданный объект SQLSession не будет автоматически совершать транзакцию после выполнения SQL. В настоящее время нам нужно позвонить в sqlsession.commit () вручную, чтобы отправить транзакцию* @return sqlsession*/public static sqlsession getsqlsession (логический isautocommit) {return getSqlSessionFactory ().Все вышеперечисленные коды были проверены, и каждый может использовать их с уверенностью!
Выше приведено учебник по обучению Mybatis, представленный вам редактором (II) - как использовать MyBatis для выполнения операций CRUD в таблице пользователей. Я надеюсь, что это будет полезно для всех. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит всем вовремя. Большое спасибо за вашу поддержку сайту wulin.com!