Ленивый принцип стратегии: только когда данные, возвращаемые с помощью запроса SQL, фактически выпускаются в базу данных, в противном случае они не будут выпущены (в основном используются в совместных запросах нескольких таблиц)
1. Ленивая нагрузка один на один:
Предположим, что в базе данных есть таблица человека и таблица карт: в таблице личности есть поля PID, PNAME, PAGE, PSEX, CID и таблица карт имеют поля CID, CNUM;
Предположим, вы хотите запросить чье -то имя и идентификационный номер:
Принцип: при запросе имени фактическая версия не запрашивает идентификационный номер. Только когда текущая станция использует идентификационный номер, он внесет запрос на карту. Это стратегия для запроса идентификационного номера;
Пример реализации:
Шаги внедрения:
1-импорт Mybatis Degy Dar Package
Файл 2-ADD LOG4J (может просмотреть фактические программы выполнения в памяти)
1 Принцип: только тогда, когда используется текущая станция, идентификационный номер используется, будет выпущен запрос на карту, в противном случае выдается только запрос информации о лице.
2-открытый ленивый: в conf.xml
<Настройки> <Настройка name = "lazyLoadingEnabled" value = "true"/> <настройка name = "AggreSsivelaZyloading" value = "false"/> </settings>
3. Реализация:
(1) В файле отображения mapper.xml:
<SELECT ID = "findCid" parameterType = "int" reculatyPe = "card"> select * из карты, где CID =#{value} < /select> <resultMap type = "person" id = "p_c1"> <id column = "pid" свойство = "pid" /> <result column = "pname" pront = "pname" /> <result vectord = "result vecult" result vectord "=" pace " /" pace " /" pace " /" page " /" pace = "pace =" pace = "pace =" pace = "pace =" pace = "result vecult". Column = "psex" Property = "psex"/> <association property = "card" javatype = "card" select = "findcid" column = "cid"> </association> </resultmap> <select id = "selectPersonAndCardlazyBypid" parameterType = "int" resultMap = "p_c1"> select * из человека, где pid =#################### 1-Select: укажите соответствующий оператор запроса
2-Column: укажите, какое значение поля в основном утверждении передается в качестве параметра для оператора SLAVE SQL
(2) Определите метод в интерфейсе Mapper:
общественный человек SelectPersonAndCardlazyBypid (int pid);
(3) Результаты испытаний с использованием JUNIT:
1. Вот запрос, который отправляет только информацию о лице;
@Test public void testselectpersonandcardlazybypid () {// ленивая политика один туакнуть человек p = pm.selectpersonandcardlazybypid (1); //System.out.println(p); System.out.println (p.getpname ()+","); //System.out.println(p.getPname ()+","+p.getCard (). GetCnum ()); }Оператор запроса выполнения результатов:
2. Запрос на карту выдается только тогда, когда текущая станция использует идентификационный номер
@Test public void testselectpersonandcardlazybypid () {// ленивая политика один туакнуть человек p = pm.selectpersonandcardlazybypid (1); //System.out.println(p); System.out.println (p.getpname ()+","); System.out.println (p.getPname ()+","+p.getCard (). GetCnum ()); // Запрос для карты выдается, когда текущая станция использует идентификационный номер}Оператор запроса выполнения результатов:
2.
Пример реализации:
Предположим, что в базе данных есть таблица личности и таблица идентификации карт, таблица адресов Adder: где есть поля PID в таблице человека, PNAME, PAGE, PSEX, CID, таблице карт и поля CNUM в таблице Adder; Таблица Adder имеет полевую помощь, Ashi, Pid
Предположим, вы хотите запросить чье -то имя и адрес, а также ваш идентификационный номер:
(1) Файл отображения mapper.xml:
<!-- lazy strategy one-to-many--> <select id="fingCard_Adder" parameterType="int" resultType="adder"> select * from adder where pid=#{value} </select> <select id="findCid1" parameterType="int" resultType="card"> select * from card where cid=#{value} </select> <resultMap type="person" id="p_c1_a1"> <id column="pid" property="pid" /> <result column="pname" property="pname" /> <result column="page" property="page" /> <result column="psex" property="psex" /> <association property="card" javaType="card" select="findCid1" column="cid"> </association> <collection property="adder" ofType="Adder" select="fingCard_Adder" column="pid"> </collection> </resultMap> <select id="selectpersonAndCardAndAdderLazyByPid" parameterType="int" resultMap="p_c1_a1"> SELECT * FROM person where pid=#{value} </select>(2) Метод определения интерфейса интерфейса Mapper:
1. Вот запрос, который отправляет только информацию о лице;
@Test public void testselectpersonandcardandadderlazybypid () {// Lazy Policy One-Many Person P = PM.SelectpersonAndCardandadderlazyBypid (1); System.out.println (p.getpname ()+","); //// Вот запрос, который отправляет только информацию о лике}Оператор запроса выполнения результатов:
2. Вот запрос, чтобы выпустить информацию о личном и личность;
@Test public void testselectpersonandcardandadderlazybypid () {// Lazy Policy One-Many Person P = PM.SelectpersonAndCardandadderlazyBypid (1); System.out.println (p.getpname ()+","); // Вот запрос, который только излучает информацию о лике; System.out.println (p.getpname ()+","+p.getCard (). GetCnum ()); // Вот запрос, который издает информацию о личности и идентификационную информацию; }Оператор запроса выполнения результатов:
3. Запрос информации о лике, информации о личности и адреса адреса выпускается здесь;
@Test public void testselectpersonandcardandadderlazybypid () {// Lazy Policy One-Many Person P = PM.SelectpersonAndCardandadderlazyBypid (1); System.out.println (p.getpname ()+","); // Это запрос, который только излучает информацию о лице; System.out.println (p.getpname ()+","+p.getCard (). GetCnum ()); // Это запрос, который излучает информацию о лице и идентификационную информацию; //System.out.println(p.getPname ()+","+p.getCard (). GetCnum ()); Для (Adder Adder: P.GetAdder ()) {/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1ваюром System.out.println (adder.getashi ()); }} Оператор запроса выполнения результатов:
Суммировать
Выше приведено метод задержки загрузки ленивой стратегии в Mybatis, введенной вам. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение. Редактор ответит вам вовремя!