1. Введение в mybatis
Mybatis - отличная структура слоя настойчивости, которая поддерживает простые запросы SQL, сохраненные процедуры и расширенное картирование.
Mybatis устраняет ручные настройки почти всех кодов JDBC и параметров и поисковой инкапсуляции набора результатов.
Mybatis может использовать простые XML или аннотации для конфигурации и необработанного отображения, отображения интерфейсов и Pojos Java (простые старые объекты Java) в записи в базе данных.
Jdbc -> dbutils (Auto -encapsulation) -> mybatis -> Hibernate
Mybatis пишет SQL в XML, а затем обращается к базе данных.
2. Начните с Mybatis
2.1. Создать новый Java Project
Добавьте Mybatis и MySQL Driver Jar: Mybatis-3.1.1.jar, Mysql-Connector-java-5.1.7-bin.jar
2.2. Создать новую таблицу
Создать базу данных mybatis; используйте mybatis; создавать пользователи таблицы (id int primary клавиш auto_increment, name varchar (20), age int); вставьте в значения пользователей (имя, возраст) ('tom', 12); вставьте в значения пользователей (имя, возраст) ('jack', 11);2.3. Добавить файл конфигурации mybatis conf.xml
<? xml version = "1.0" Encoding = "UTF-8"?> <! Конфигурация doctype public "-// mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3 config.dtd"> configuration>. id="development"><transactionManager type="JDBC" /><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver" /><property name="url" value="jdbc:mysql://localhost:3306/mybatis" /><property name="username" value="root" /><property name = "password" value = "root"/> </dataSource> </envenerition> </ervines> </configuration>
2.4. Определите класс объектов, соответствующий таблице
Пользователь открытого класса {private Int Id; Private String name; private int age; // get, set Method}2.5. Определите файл отображения SQL USERMAPPER.XML, который управляет таблицей пользователей
<? 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.org/dtd/mybatis-3-mapper.dtd"> mapper. namespace = "com.atguigu.mybatis_test.test1.usermapper"> <select id = "getUser" parametertype = "int" out resultype = "com.atguigu.mybatis_test.test1.user"> select * от пользователей, где id =#{id} </select> </mapper> </mapper> </mapper>2.6 Зарегистрируйте файл usermapper.xml в файле conf.xml
<mappers> <mapper resource = "com/atguigu/mybatis_test/test1/usermapper.xml"/> </mappers>
2.7 Написание тестового кода: выполнить определенные операторы SELECT
Общедоступный тест класса {public static void main (string [] args) throws ioException {string resource = "conf.xml"; // Загрузить файл конфигурации mybatis (он также загружает связанный файл отображения) rearder = resources.getresourcearder (ресурс); SqlSessionFactoryBuilder().build(reader);//Create a sqlSessionSqlSession session that can execute sql in the mapping file = sessionFactory.openSession();//Mapping SQL Identification String String Statement = "com.atguigu.mybatis.bean.userMapper"+".selectUser";//Execute the query to return a unique user object sqlUser user = session.selectone (оператор, 1); System.out.println (user);}}3. Работать с таблицей пользователей
3.1.xml реализация
3.1.1. Определите картирование SQL XML -файл:
<INSERT ID = "INSERTUSER" parameterType = "com.atguigu.ibatis.bean.user"> вставьте в пользователи (name, age) (#{name},#{age}); </insert> <delete id = "deleteUser" parametertyp = "int"> delete where udete where ude ude udete upelete "inte"> delete where where where ude udete upelete "> delet ParameterType = "com.atguigu.ibatis.bean.user"> Обновление пользователей Set name =#{name}, age =#{age}, где id =#{id} </upplet> <select id = "selectUser" parametertype = "int" out upertype = "com.atguig.ibatis.bean.user" id =#{id} </select> <select id = "selectallusers" resultype = "com.atguigu.ibatis.bean.user"> select * of ansers </select>3.1.2. Зарегистрируйте этот файл отображения в config.xml
<mapper resource = "com/atguigu/ibatis/bean/usermapper.xml"/>
3.1.3. Вызвано в Дао
Общественный пользователь getUserbyId (int id) {sqlSession session = sessionFactory.Opensession (); user user = session.selectone (uri+". selectUser", id); return user;}3.2. Внедрение аннотаций
3.2.1. Определите интерфейс для картирования SQL
публичный интерфейс usermapper {@Insert ("insert in iners (name, age) value id =#{id} ") public int updateUser (пользователь пользователя);@select (" select * из пользователей, где id =#{id} ") public user getUserbyid (int id);@select (" select * from users ") public list <user> getalluser ();}3.2.2. Зарегистрируйте этот интерфейс отображения в конфигурации
<mapper/>
3.2.3. Вызвано в Дао
Общедоступный пользователь getUserbyId (int id) {sqlSession session = sessionFactory.Opensession (); userMapper mapper = session.getMapper (usermapper.class); user user = mapper.getUserbyid (id); return user;}4. Несколько мест, которые можно оптимизировать
4.1. Конфигурация подключения к базе данных может быть размещена в файле свойств отдельно.
## db.properties <br> <Properties resource = "db.properties" /> <name = "Driver" value = "$ {Driver}" /> <name = "url" value = "$ {url}" /> <name = "username" value = "$ {username}" /> <name = "value =" $ "$" $ "$" $ "4.2. Определите псевдоним для классов сущностей и упростите ссылки в файлах SQL Mapping XML
<Typealiases> <typealias type = "com.atguigu.ibatis.bean.user" alias = "_ user"/> </typealiases>
4.3. Вы можете добавить файл конфигурации log4j в SRC, чтобы распечатать информацию журнала
1. Добавить банку:
log4j-1.2.16.jar
2.1. log4j.properties (метод 1)
log4j.properties, log4j.rootlogger = debug, console#consolelog4j.appender.console = org.apache.log4j.consoleappenderlog4j.appender.console.layout = org.apache.log4j.patternlayoutlog4j.appender.console.concout.concortnvers. %-5p [ %c] - %m%nlog4j.logger.java.sql.resultset = infolg4j.logger.org.apache = Infolog4j.logger.java.sql.connection = deguglog4j.logger.java.sql.statement = devuglog4j.logger.java.sql.statement = devuglog4j.logger.java.sqlement statement = debuglog4j.logger.java.
2.2. log4j.xml (метод 2)
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"><log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"><appender name="STDOUT"><layout><param name="ConversionPattern" value = "%-5p%d {MM-DD HH: MM: SS, SS}%m (%f:%l) /n" /> < /mayout> < /appender> <logger name = "java.sql"> <value = "Debug" /> < /logger> <logger name = "org.apache.ibatis"> <value value = "value =" value = "value =" value = "value =" value = "value =" value = "value =" value = "value =" value "" /> < /logger> <root> <value = "debug" /> <appender-ref ref = "stdout" /> < /root> < /log4j: configuration>5. Разрешение конфликтов между именами поля и именами атрибутов класса объекта
5.1. Приготовьте столы и поля
Создать таблицы заказов (order_id int Первичный ключ auto_increment, order_no varchar (20), order_price float); вставьте в ордеры (order_no, order_price) значения ('aaaa', 23); вставьте в ордеры (order_no, order_price) значения ('bbbb', 33); 22);5.2. Определить классы сущности
Public Class Order {Private Int Id; Private String Orderno; Private Float Price;}5.3. Реализуйте запрос getorderbyid (id):
Метод 1: Определить псевдоним в операторах SQL
<SELECT ID = "SELECTERDER" PARAMETERTYPE = "int" resultType = "_ Order"> SELECT ORDER_ID ID, ORDER_NO ORDERNO, цена ORDER_PRICE из заказов, где order_id =#{id} </selet>Метод 2: Через <Результат MAP>
<select id = "selectorderresultmap" parametertype = "int" resultMap = "orderresultmap"> select * из ордеров, где order_id =#{id} </select> <resultMap = "_ orders" id = "orderResultmap"> <id = "id" colund = order_id "/> <resuld. свойство = "цена" column = "order_price"/> <result property = "price" column = "order_price"/> <resultmap>6. Реализовать таблицу ассоциации
6.1. Ассоциация один на один
6.1.1. Предложить требованиям
Информация о классе запросов на основе идентификатора класса (информация с учителем)
6.1.2. Создать таблицы и данные
Создать таблицу учителя (t_id int Первичный ключ AUTO_INCREMENT, T_NAME VARCHAR (20)); CREATE TABLE CLASS (C_ID INT Первичный ключ AUTO_INCREMENT, C_NAME VARCHAR (20), Учитель_ид INT); Альтер Таблица Класс добавить ограничение FK_TEACHER_ID Foreign Key (учительница_ид) SESERVIENTICS (T_ID); Вставьте в Teacher (t_name) Values ('ls1'); вставьте в значения учителя (t_name) ('ls2'); вставить в класс (c_name, inemine_id) значения ('bj_a', 1); вставьте в класс (c_name, wearm_id) values ('bj_b', 2);6.1.3. Определите классы сущности:
Учитель открытого класса {Private Int Id; Private String name;} Общедоступные классы классов {private Int Id; Private String name; частный учитель;}6.1.4. Определите файл картирования SQL classmapper.xml
<!-Метод 1: Вложенные результаты: Используйте вложенные карты результатов для обработки подмножества дублирующих совместных результатов Select * Из класса C, учителя T, Stulation S, где C.Teacher_ID = T.T_ID и C.C_ID = S.Class_ID и C.C_ID = 1-> <SELECT ID = "GetClass3" ParameterType = "int" roldmap = "classultresultmap3"> selectmap3 "> selectmap3"> selectmap3 "> selectmap3"> selectmap3 "> stectempult", stecke wristresultmap3 "> stecke stectre-selectmap3 c.teacher_id = t.t_id и c.c_id = s.class_id и c.c_id = 1-> <select id = "getClass3" parameterType = "int" resultMap = "classResultMap3"> select * из класса C, учитель T, Sc.weacher_id = t.t_id и c.c_id = s.class_id C.C_ID =#{id} </select> <resultMap type = "_ Classes" id = "classResultMap3"> <id property = "id" column = "c_id"/> <result property = "column =" c_id "/> <association property =" Учитель "=" Учитель_ид "javatype =" _ Id Propertion = "ID"/"ID"/"ID"/"ID"/"ID"/"ID"/"ID"/"ID". свойство = "name" colun = "t_name"/> <result property = "name" column = "t_name"/> </association> <!-optype Указывает тип объекта в коллекции студентов-> <collection property = "oftype =" _ Студент "> <id property =" id "column =" s_id "/> property =" Column = "S_NAME"/> </collection> </resultMap> <!-Метод 2: Вложенный запрос: вернуть ожидаемый комплексный тип, выполнив другой оператор SQL Mapping Select * Из класса, где C_ID = 1; выберите * из учителя, где T_ID = 1 // 1 является значением учителя_ид, полученного по предыдущему запросу * SELECT * из Class_ID = 1 // 1 является значением C_ID-поля. id = "getClass4" parameterType = "int" resultMap = "classResultMap4"> select * из класса, где c_id =#{id} </select> <resultMap type = "_ Classe" id = "classResultmap4"> <id property = "id" column = "c_id"/> <result mame "column" = "c_name"/""/"/" "/" "/" "/" "/" "/" "/" "/" "/" "/" "/" "/" "/" "/" "/" "/" "/" "/"? column = "Учитель_ид" javatype = "_ Учитель" select = "getTeacher2"> </association> <collection property = "студенты" oftype = "_ Stected" Column = "c_id" select = "getStudent"> </collection> </resultMap> <select id = "getTeacher2" parameterType = "int" uldatepe = "_ideme vememe", seleacher2 "from hight, intame, wome wy lecememe wome wypeme with wypeme Учитель, где t_id =#{id} </select> <select id = "getStudent" parameterType = "int" resultyPe = "_ Студент"> SELECT S_ID ID, имя S_NAME от ученика, где class_id =#{id} </select>6.1.5. Тест
@Testpublic void testoo () {sqlsession sqlsession = factory.opensession (); classes c = sqlsession.selectone ("com.atguigu.day03_mybatis.test5.oomapper.getClass", 1); System.out.println (c); factory.opensession (); классы c = sqlsession.selectone ("com.atguigu.day03_mybatis.test5.oomapper.getClass2", 1); System.out.println (c);}6.2. Одно ко многим ассоциация
6.2.1. Предложить требованиям
Запросите соответствующую информацию о классе в соответствии с Classid, включая студентов и учителей
6.2.2. Создать таблицы и данные:
Создать таблицу Студента (S_ID int Первичный ключ Auto_Increment, s_name varchar (20), class_id int); вставьте в студент (s_name, class_id) values ('xs_a', 1); вставьте в student (s_name, class_id) values ('xs_b', 1); INSERT в студент (S_NAME, class_id) значения ('xs_b', 1); Isert int int it int in int it in int it in int it int at int at intuse (s_name, class_id) values ('xs_b', 1); Студент (s_name, class_id) values ('xs_d', 2); вставьте в значения Student (s_name, class_id) ('xs_e', 2); вставьте в значения Student (s_name, class_id) ('xs_f', 2);6.2.3. Определить классы сущности
студент открытого класса {private Int Id; Private String name;} Общедоступные классы {private int id; private String name; частный учитель учитель; частный список <студент> студенты;};};}6.2.4. Определите файл картирования SQL classmapper.xml
<!-Метод 1: Вложенные результаты: Используйте вложенные карты результатов для обработки подмножества дублирующих совместных результатов Select * Из класса C, учителя T, Stulation S, где C.Teacher_ID = T.T_ID и C.C_ID = S.Class_ID и C.C_ID = 1-> <SELECT ID = "GetClass3" ParameterType = "int" roldmap = "classultresultmap3"> selectmap3 "> selectmap3"> selectmap3 "> selectmap3"> selectmap3 "> stectempult", stecke wristresultmap3 "> stecke stectre-selectmap3 c.teacher_id = t.t_id и c.c_id = s.class_id и c.c_id = 1-> <select id = "getClass3" parameterType = "int" resultMap = "classResultMap3"> select * из класса C, учитель T, Sc.weacher_id = t.t_id и c.c_id = s.class_id C.C_ID =#{id} </select> <resultMap type = "_ Classes" id = "classResultMap3"> <id property = "id" column = "c_id"/> <result property = "column =" c_id "/> <association property =" Учитель "=" Учитель_ид "javatype =" _ Id Propertion = "ID"/"ID"/"ID"/"ID"/"ID"/"ID"/"ID"/"ID". свойство = "name" colun = "t_name"/> <result property = "name" column = "t_name"/> </association> <!-optype Указывает тип объекта в коллекции студентов-> <collection property = "oftype =" _ Студент "> <id property =" id "column =" s_id "/> property =" Column = "S_NAME"/> </collection> </resultMap> <!-Метод 2: Вложенный запрос: вернуть ожидаемый комплексный тип, выполнив другой оператор SQL Mapping Select * Из класса, где C_ID = 1; выберите * из учителя, где T_ID = 1 // 1 является значением учителя_ид, полученного по предыдущему запросу * SELECT * из Class_ID = 1 // 1 является значением C_ID-поля. id = "getClass4" parameterType = "int" resultMap = "classResultMap4"> select * из класса, где c_id =#{id} </select> <resultMap type = "_ Classe" id = "classResultmap4"> <id property = "id" column = "c_id"/> <result mame "column" = "c_name"/""/"/" "/" "/" "/" "/" "/" "/" "/" "/" "/" "/" "/" "/" "/" "/" "/" "/" "/"? column = "Учитель_ид" javatype = "_ Учитель" select = "getTeacher2"> </association> <collection property = "студенты" oftype = "_ Stected" Column = "c_id" select = "getStudent"> </collection> </resultMap> <select id = "getTeacher2" parameterType = "int" uldatepe = "_ideme vememe", seleacher2 "from hight, intame, wome wy lecememe wome wypeme with wypeme Учитель, где t_id =#{id} </select> <select id = "getStudent" parameterType = "int" resultyPe = "_ Студент"> SELECT S_ID ID, имя S_NAME от ученика, где class_id =#{id} </select>6.2.5. Тест
@Testpublic void testom () {sqlsession sqlsession = factory.opensession (); classes c = sqlsession.selectone ("com.atguigu.day03_mybatis.test5.om = factory.opensession (); классы c = sqlsession.selectone ("com.atguigu.day03_mybatis.test5.oomapper.getClass4", 1); System.out.println (c);}7. Динамический SQL и нечеткий запрос
7.1. Требования
Реализуйте пользователя запроса на несколько кондиционеров (имя нечеткого сочетания, возраст между указанным минимальным значением и максимальным значением).
7.2 Подготовьте базу данных и таблицы
Создать таблицу d_user (id int primary key auto_increment, имя varchar (10), age int (3)); вставьте в значения d_user (имя, возраст) ('tom', 12); вставить в значения d_user (имя, возраст) ('bob', 13); Вставьте в D_USER (имя, возраст) значения ('Jack', 18); 7.3.conditionUser (класс условной сущности запроса) Private String Имя; private int minage; private int maxage;7.4.Ser Table Class Class
Private Int Id; частное название строки; Private Int Age;
7.5.usermapper.xml (файл карты)
<? 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.org/dtd/mybatis-3-mapper.dtd " namespace = "com.atguigu.day03_mybatis.test6.usermapper"> <select id = "getUser" parametertype = "com.atguigu.day03_mybatis.test6.conditionuser" outpertype = "com.atguig.day03_mybatis.test6. AGE> =#{Minage} и Age <=#{maxage} <if test = 'name! = "%null%"'> и имя как#{name} </if> </selet> </mapper>7.6.usertest (тест)
открытый класс usertest {public static void main (String [] args) Throws ioException {reader reader = resources.getresourceasreader ("conf.xml"); sqlsessionFactory sessionFactory = new sqlSessionFactoryBuilder (). Build (Reader); sqlSession sqlSession = sessionFactory.opens.opens. "com.atguigu.day03_mybatis.test6.usermapper.getuser"; list <user> list = sqlSession.selectlist (оператор, новый условие ("%a%", 1, 12)); System.out.println (list);}}Динамические теги SQL доступны в Mybatis
8. Вызов хранимых процедур
8.1. Сделать спрос
Запрос количества мужчин или женщин, если вход составляет 0, женщины иначе мужчины
8.2. Подготовьте таблицы баз данных и хранимые процедуры:
Создать таблицу p_user (id int первичный ключ Auto_increment, имя varchar (10), sex char (2)); вставьте в p_user (имя, секс) значения ('a', "male"); Вставьте в p_user (имя, секс) значения ('b', "женский"); Вставьте в p_user (имя, секс) значения ('c', "male"); #CREATE ХАРЕТЬ ПРОЦЕДУРА (Ищите количество мужчин или женщин, если входное равно 0, женщины являются мужчинами). Разделитель $. От mybatis.p_user, где p_user.sex = 'male' in overse_count; end if; end $#call Хранилированная процедура; set @user_count = 0; вызовать mybatis.ges_user_count (1, @User_count); select @user_count;8.3. Создать класс сущности таблицы
Пользователь открытого класса {Private String Id; Private String Name; Private String Sex;}8.4.usermapper.xml
<mapper namespace = "com.atguigu.mybatis.test7.usermapper"> <!-запрос получает количество мужчин или женщин. Если вход 0 равен 0, то иначе женщины являются Males.call mybatis.get_user_count (1, @user_count);-> <select id = "getCount" atportiontype = "callable" parametermap = "getCountmap"> call mybatis.get_user_count (? id = "getCountMap"> <parameter property = "sex_id" mode = "в" jdbctype = "integer"/> <parameter proportment = "user_count" mode = "out" jdbctype = "Integer" // </parametermap> </mapper>
8.5. Тест
Map <string, integer> parammap = new hashmap <> (); parammap.put ("sex_id", 0); session.selectone (оператор, parammap); integer usercount = parammap.get ("user_count"); system.out.println (usercount);9. Mybatis Cache
9.1. Поймите кеш mybatis
Как и в большинстве структур настойчивости, Mybatis также обеспечивает поддержку кэша L1 и L2.
1. Кэш 1 -го уровня: локальный кэш HashMap На основании PerpetualCache, его сессия хранения - сеанс. После промывки или закрытия сессия все кэши в сеансе будут очищены.
2. Кэш второго уровня такой же, как и кэш первого уровня. Он также по умолчанию также использует хранилище PerpetualCache и HashMap. Разница в том, что его масштаб хранения - это Mapper (пространство имен), и он может настроить источник хранения, такой как ehcache.
3. Для механизма обновления данных кэша, когда определенный объем (сеанс кэша первого уровня/имена кэша второго уровня) выполняется в операциях C/U/D, все кэши в выборах в этом объеме будут очищены по умолчанию.
9.2. МИБАТИС Уровень 1 Кэш
9.2.1. Запрос на основе задачи
Запросите соответствующий объект записи пользователя на основе идентификатора.
9.2.2. Подготовьте таблицы и данные базы данных
Создать таблицу C_USER (ID int Первичный ключ AUTO_INCREMENT, Имя VARCHAR (20), AGE Int); Вставьте в значения C_USER (имя, возраст) ('TOM', 12); вставьте в C_USER (имя, возраст) значения ('jack', 11);9.2.3. Создать класс сущности таблицы
Пользователь открытого класса реализует Serializable {Private Int Id; Private String name; Private Int Age;9.2.4.usermapper.xml
<? 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.org/dtd/mybatis-3-mapper.dtd"> mapper. namespace = "com.atguigu.mybatis.test8.usermapper"> <select id = "getUser" parametertype = "int" recouttype = "_ cuser"> select * from c_user, где id =#{id} </select> <update id = "updateUser" parameterType = "_ rucer" AGE =#{AGE} где id =#{id} </update> </mapper>9.2.5. Тестирование
/** Кэш 1 Уровень: то есть кэш на уровне сеанса (по умолчанию)*/@testpublic void testCache1 () {sqlSession session = mybatisutils.getsession (); string athiple = "com.atguigu.mybatis.test8.usermapper.getUser"; пользователь user = session.selectone (1); Кэш 1 -го уровня будет использоваться по умолчанию*//*user = session.selectone (оператор, 1); System.out.println (пользователь);*//*1. Это должен быть тот же сеанс. Если объект сеанса был закрыт (), его невозможно использовать*//*session = mybatisutils.getsession (); user = session.selectone (оператор, 1); system.out.println (user);*//*2. Условия запроса одинаковы*//*user = session.selectone (оператор, 2); System.out.println (user);*//*3. Session.clearcache () не был выполнен для очистки кэша*//*session.clearcache (); user = session.selectone (оператор, 2); System.out.println (user);*//*4. Операции, которые не были добавлены, удалены и изменены (эти операции очищают кэш)*//*session.update ("com.atguigu.mybatis.test8.usermapper.updateuser", новый пользователь (2, "Пользователь", 23); user = session.selectone (утверждение, 2); System.out.println (пользователь);*/at.tecterne.9.3.mybatis уровня 2 кэш
9.3.1. Добавить <Cache> в userMapper.xml
<mapper namespace = "com.atguigu.mybatis.test8.usermapper"> <cache/>
9.3.2. Тестирование
/** Уровень теста 2 Cache*/@testpublic void testCache2 () {String atportion = "com.atguigu.mybatis.test8.usermapper.getuser"; sqlsession session = mybatisutils.getsession (); пользователь user = session.selectone (утверждение 1); session.commid (); system.ourtses.println (usersessession () session2 = mybatisutils.getsession (); user = session2.selectone (оператор, 1); session.commit (); System.out.println ("user2 ="+user);}9.3.3. Дополнительные заметки
1. Все выбранные операторы в файле операторов сопоставления будут кэшированы.
2. Сопоставьте все операторы вставки, обновления и удаления в файле операторов обновлять кэш.
3. Кэш будет повторно подключен с использованием наименее недавно используемого (LRU, наименьшего недавно используемого) алгоритма.
4. Кэш будет обновляться в соответствии с указанным интервалом времени.
5. Кэш будет хранить объекты 1024.
<cacheeviction = "fifo" // Стратегия переработки первой в In-in FlushInterval = "60000" // Автоматическое время обновления 60ssize = "512" // Кэш до 512 ссылок-объектов readonly = "true" // Только чтение только
10. Весенняя интеграция mybatis
10.1. Добавить банку
【Mybatis】
mybatis-3.2.0.jar
mybatis-spring-1.1.1.jar
log4j-1.2.17.jar
【весна】
Spring-Aop-3.2.0.release.jar
Spring-Beans-3.2.0.release.jar
Spring-Context-3.2.0.release.jar
Spring-Core-3.2.0.release.jar
Spring-Expression-3.2.0.release.jar
Spring-jdbc-3.2.0.release.jar
Spring-test-3.2.4.release.jar
Spring-TX-3.2.0.Release.jar
Aopalliance-1.0.jar
Cglib-nodep-2.2.3.jar
Commons-Logging-1.1.1.jar
【Пакет драйверов MySQL】
MySQL-Connector-Java-5.0.4-bin.jar
10.2. Таблицы базы данных
Создать таблицу s_user (user_id int auto_increment Первичный ключ, user_name varchar (30), дата user_birthday, user_salary double)
10.3. Класс объектов: Пользователь
Пользователь открытого класса {private Int Id; Private String name; Private Date Grentle; частная двойная зарплата; // Установить, получить метод}10.4.dao интерфейс: usermapper (xxxmapper)
public interface usermapper {void save (пользователь пользователя); void uppleation (пользователь пользователь); void удаление (int id); user findbyid (int id); list <user> findall ();}10.5.SQL Файл отображения: USERMAPPER.XML (то же имя, что и интерфейс игнорирует верхнюю и верхнюю регистрацию)
<? 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.org/dtd/mybatis-3-mapper.dtd " namespace = "com.atguigu.mybatis.test9.usermapper"> <resultMap type = "user" id = "userResult"> <result column = "user_id" property = "id"/> <result column = "user_name" propertive = "name"/> <result column = "user_birthday". column = "user_salary" Property = "Parlary"/> <resultMap> <!-Получить идентификатор после вставки данных-> <insert id = "save" keycolumn = "user_id" keyproperty = "id" usegeneratedkeys = "true"> вставьте в s_user (user_name, user_birthday, user_salary) values ( #{name}, #{день рождения}, #{зарплата}) </insert> <update id = "update"> update s_userset user_name = #{name}, user_birthday = #{день рождения}, user_salary = #{name}, user_birthday = #{день рождения}, user_salary = #{name}, user_birthday = #{день рождения}, user_salary = #{name}, user_birthday = #{день рождения}, user_salary = #{name}. #{id} </update> <delete id = "delete"> delete from s_userwhere user_id = #{id} </delete> <select id = "findbyid" resultmap = "userResult"> select *from s_userwhere user_id = #{id} </select> <select = "findall" s_user </select> </mapper>10.6.spring Файл конфигурации: beans.xml
<? xml version = "1.0" Encoding = "UTF-8"?> <фасоль xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: p = "http://www.springframe.orgema. "xmlns: context =" http://www.springframework.org/schema/context "xmlns: tx =" http://www.springframework.org/schema/tx "xsi: schemalocation =" http: //wwwspringfr amework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.2.2.xsdhttp://www.springframework.org/schema/context/sprin g-context-3.2.xsdhttp: //www.springframework.org/schema/tx/spring-3.2.2.xsdhttp: //www.springframework.org/schema/tx/spring-3.2.2.xsd "> <!-! 1. Источник данных: DriverManagerDatasource -> <Bean Id = "DataSource" class = "org.springframework.jdbc.datasource.drivermanagerdatasource"> <name = "verailclassname" value = "mysql.jdbc.driver"/> <name = "url" value = "jdbc: mysql: // localhost: 3306/mybatis"/> <name = "username" value = "root"/> <name = "password" value = "root"/> </bean> <!-2. MyBatis 'SQLSession Factory: SQLSessionFactoryBeandatasource/TypealiasEspackage-> <Bean id = "sqlSessionFactory"> <name = "dataSource" ref = "dataSource"/> <свойство = "TypeAliasSpackage" value = "com.atig.spring_mybatis2.mondomain"/>. Mybatis автоматически сканирует для загрузки файлов отображения SQL: mappersCannerConfigurersQlSessionFactory/basePackage-> <Beanc> <name = "basepackage" value = "com.atig.spring_mybatis2.mapper"/> <property name = "sqlSessionFactory" ref = "sqlSecseCarotory"/> </> <./". Управление: DataSourcEtransActionManager-> <bean id = "txmanager"> <name = "dataSource" ref = "dataSource"/> </bean> <!-5. Используйте декларативную транзакцию-> <TX: Annotation Transaction-Manager = "txmanager"/> </beans>
10.7.mybatis файл конфигурации: mybatis-config.xml
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype ConfigurationPublic "-// mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <ficureturation> <! Unnecessary-> <!-Установите файл внешней конфигурации-> <!-Установите имя категории-> <!-Установить среду подключения базы данных-> <!-Файл отображения-> </configuration>
10.8 Тест
@Runwith (springjunit4classrunner.class) // Использование Springtest Test Framework @ContextConfiguration ("/beans.xml") // Нагрузка конфигурации открытого класса smtest {@autowired // inject private usermapper usermapper; @testpublic void save () {пользователь пользователь = новый пользователь (); Date ()); user.setname ("mary"); user.setsalary (300); usermapper.save (user); system.out.println (user.getid ());}@testpublic void update () {user user = usermapper.findbyid (2); user.setsalary (2000); delete () {usermapper.delete (3);}@testpublic void findbyid () {user user = usermapper.findbyid (1); system.out.println (user);}@testpublic void findall () {user> users = usermapper.findall (); System.out.ous.println (user> usermapper.findall ();Выше приведено быстрое введение в Mybatis (краткий и простой анализ и прост для понимания), введенное редактором. Я надеюсь, что это будет полезно для всех. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит всем вовремя. Большое спасибо за вашу поддержку сайту wulin.com!