20200103-- продолжать обзор mybatis

mybatis и зимуют разница
спящего режима ОРМ является стандартной рамки (объектно-реляционное отображение) не нужно писать на языке SQL.
Но если вам нужно оптимизировать оператор SQL, более сложные
сценарии: на протяжении большей части меняющихся потребностей малых и средних проектов, таких как офисные системы

mybatis: фокус на самом SQL, программисты должны написать собственное заявление SQL, более удобные оптимизации
сценариев: больше изменений спроса, Интернет - проект

mybatis метод развития дао

Диапазон sqlsession
создан sqlsession Fatory
завод , созданный застройщиком

Пример управляемого одиночный режима (режим sqlsessionFactory банка
для использования в будущем после весны mybatis интегрированного единого варианта sqlsessionFactory режима управления

sqlsession является пользовательским интерфейсом для вашего
способа работы базы данных SelectOne selecttList
sqlsession небезопасного
поля данных есть атрибут

Dao оригинальный метод разработки
программисты должны написать дао интерфейс и класс реализации
потребности внедрить sqlsessionfatory класс реализации дао, в естественных условиях путем sqlsessionfatory создания sqlsession

дао интерфейс

public interface UserDao {
    //根据id查询用户信息
    public User findUserById(int id) throws Exception;

    //添加用户信息
    public void insertUser (User user) throws Exception;

    //删除用户信息
    public void deleteUser(int id )throws Exception;
    
}

Реализует интерфейс класса

package cn.mmz.mybatis.dao;

import cn.mmz.mybatis.pojo.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

/**
 * @Classname UserDaoImpl
 * @Description dao接口实现类
 * @Date 2020/1/3 20:43
 * @Created by mmz
 */
public class UserDaoImpl implements UserDao {
    private SqlSessionFactory sqlSessionFactory;
    public UserDaoImpl(SqlSessionFactory sqlSessionFactory){
        this.sqlSessionFactory = sqlSessionFactory;
    }

    @Override
    public User findUserById(int id) throws Exception {
        SqlSession sqlSession = sqlSessionFactory.openSession();

        User user = sqlSession.selectOne("test.findUserById",id);
        sqlSession.close();
        return user;
    }

    @Override
    public void insertUser(User user) throws Exception {
        SqlSession sqlSession = sqlSessionFactory.openSession();
        sqlSession.insert("test.insertUser",user);
        sqlSession.commit();
        sqlSession.close();
    }

    @Override
    public void deleteUser(int id) throws Exception {
        SqlSession sqlSession = sqlSessionFactory.openSession();
        sqlSession.delete("test.deleteUser",id);
        sqlSession.commit();
        sqlSession.close();
    }
}

Как создать тестовый класс,
CMD + Shift + T в пресс - неимением в тестовом классе, вы можете создать своего рода тест

package cn.mmz.mybatis.dao;

import cn.mmz.mybatis.pojo.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;

import java.io.InputStream;

/**
 * @Classname UserDaoImplTest
 * @Description TODO
 * @Date 2020/1/3 21:04
 * @Created by mmz
 */
public class UserDaoImplTest {
    private SqlSessionFactory sqlSessionFactory;
    @Before
    public void setUp() throws  Exception{
        //创建sqlsessionFactory
        String resource = "SqlMapConfig.xml";
        //得到配置文件流
        InputStream inputStream =  Resources.getResourceAsStream(resource);
        //创建会话工厂,传入配置文件信息
        sqlSessionFactory =new SqlSessionFactoryBuilder().build(inputStream);
    }
    @Test
    public void findUserById() throws Exception{
        UserDao userDao = new UserDaoImpl(sqlSessionFactory);
        User user = userDao.findUserById(1);
        System.out.println(userDao);
    }

    @Test
    public void insertUser() {
    }

    @Test
    public void deleteUser() {
    }
}

Это сгенерированный класс тест, @ , прежде чем писать то , что должно быть сделано , прежде чем сделать блок
является необходимость генерировать sqlSessionFactory
то тестовый случай @Test метода
на нем

public void findUserById() throws Exception{
        UserDao userDao = new UserDaoImpl(sqlSessionFactory);
        User user = userDao.findUserById(1);
        System.out.println(userDao);
    }

Общее сырье дао развивается проблемами
есть много шаблонов код дао интерфейс метода класса реализации, код может представить себе выписку

При вызове метода sqlsession, оператор жестко

Входящий вызов sqlsession переменной метод, метод из-за sqlsession использованием дженериков, даже если тип переменной передается по ошибке, а не ошибка во время компиляции. Это не способствует развитию программистов

Mapper прокси-метод

Программисты могут писать интерфейс,
но и нужно отображения файлов записи Mapper
необходимо следить за развитием норм

Разработка спецификации
пространства имен равно картографа адрес интерфейса
Here Вставка рисунка Описание

идентификатор соответствует утверждению интерфейса и метода имен mapper.java в mapper.xml

Метод типа картостроитель интерфейс и одни и те же параметры, как входной параметр указывает тип заявления

Значение mapper.java типа возвращаемого значения согласуется с утверждением отображения файла ResultType

Обобщенная
выше спецификации разработаны главным образом в нижней части единой генерации кода

mybatis может быть автоматически генерируется интерфейс прокси-объекта класса картографа

Тестирование
Here Вставка рисунка Описание
Мы начали на основе времени первоначального развития дао, создать интерфейс интерфейса Userdao, а затем создать экземпляр этого интерфейса UserDaoImpl, есть способ , чтобы написать , как действовать

    @Override
    public User findUserById(int id) throws Exception {
        SqlSession sqlSession = sqlSessionFactory.openSession();

        User user = sqlSession.selectOne("test.findUserById",id);
        sqlSession.close();
        return user;
    }

Поэтому, когда мы используем развитие картографа интерфейса, мы не имеем этот экземпляр UserDaoImpl класса, поэтому мы начали создавать эту сессию

 SqlSession sqlSession = sqlSessionFactory.openSession();

Затем создайте объект UserMapper

        UserMapper  userMapper = sqlSession.getMapper(UserMapper.class);

Это предложение mybatis автоматически генерируется прокси-объект картограф

Когда тест уделяется потому, что вы настроили файл UserMapper, вам нужно поместить этот файл для настройки общего файла SqlMapperConfig

Here Вставка рисунка Описание
Here Вставка рисунка Описание
Успешные результаты, в связи с пользователем не добавить метод ToString, он должен возвращать адрес

Таким образом , после добавления метода ToString
Here Вставка рисунка Описание
вызывается внутри прокси - объект SelectOne или SelectList
если метод возвращает не коллекцию объектов картографа, Pojo один объект внутри прокси - объекта объект запроса по SelectOne
Так что, если он представляет собой набор объектов, затем возвращает список

    public void findUserByName() throws Exception{
        SqlSession sqlSession = sqlSessionFactory.openSession();
        UserMapper  userMapper = sqlSession.getMapper(UserMapper.class);
        List<User> user = userMapper.findUserByName("小明");
        System.out.println(user);
    }

Проблема
метод имеет только интерфейс сопоставителя один параметр, то система не будет влиять на развитие?
Система кадров, дао код уровня является распространенным явлением.
Даже картограф интерфейс имеет только один параметр, вы можете использовать тип упаковки POJO для удовлетворения потребностей различных методов ведения бизнеса

Примечание: Подход живучесть слой может быть использован тип упаковки, метод обслуживания не рекомендуется пакет типа (не способствует бизнес-слой может простираться обслуживание)

Опубликовано 657 оригинальные статьи · вона похвала 39 · просмотров 60000 +

рекомендация

отblog.csdn.net/qq_36344771/article/details/103826459