Используйте Mybatis в одиночку, чтобы управлять вещами
Я написал связанный контент в статье Mybatis. Здесь я буду продолжать писать самую простую демонстрацию. Давайте рассмотрим содержание Mybatis раньше. Во -первых, создайте таблицу и создайте простую студенческую таблицу:
Создать таблицу Студент (student_id int auto_increment, student_name varchar (20) не нулевой, первичный ключ (student_id))
Создать ученик класса Entity.java:
Общедоступный студент {private int int outdent; intultyD; private String StudentName; public int getStudEdid () {return StudentId;} public void setStudEntid (int outdentId) {this.Studentid = studentId;} public String getStudentName () {return StudentNam toString () {return "Student {[studentId:" + student + "], [StudentName:" + studentName + "]}";}} Чтобы выразить это больше, переопределение метода ToString () для классов сущности и печать каждого (или ключевого атрибута) является рекомендуемым подходом. Далее это config.xml, которая содержит базовую конфигурацию JDBC:
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><typeAliases><typeAlias alias="Student" type = "org.xrq.domain.student"/> </typealiases> <среда default = "разработка"> <среда идентификатор = "разработка"> <transactionManger Type = "jdbc"/> <dataSource type = "Booled"> <Свойство = "Driver" value = "mysql.jdbc.driver"/> <propertive = "url" value="jdbc:mysql://localhost:3306/test"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments><mappers><mapper resource="student_mapper.xml"/></mappers></configuration>
Тогда есть Student_mapper.xml, в основном конкретный оператор SQL:
<mapper namespace="StudentMapper"><resultMap type="Student" id="StudentMap"><id column="student_id" property="studentId" jdbcType="INTEGER" /><result column="student_name" property="studentName" jdbcType="VARCHAR" /></resultMap><select id="selectAllStudents" resultmap = "studentMap"> select student_id, student_name из student; </select> <insert id = "insertStudent" useGeneratedKeys = "true" keyProperty = "studentId" parameterType = "student"> int inted (student_id, student_name) jdbctype = varchar}); </insert> </mapper>
Создайте mybatisutil.java, который используется для создания некоторых основных элементов mybatis. Последующие классы наследуют этот класс:
открытый класс mybatisutil {защищенный статический SQLSessionFactory SSF; защищенный статический считыватель чтения; static {try {Reader = resources.getResourCeaseRearder ("config.xml"); ssf = new sqlSessionFactoryBuilder (). Build (Reader); SqlSession getSqlSession () {return ssf.opensession ();}} Требования к разработке на уровне предприятия:
1. Отдельное определение и реализация
2. Многослойное развитие, обычно DAO-> Service-> Controller, не исключено, что еще один слой/несколько слоя или один меньший слой добавляется в соответствии с конкретной ситуацией.
Итак, сначала напишите интерфейс StudentDao.java:
Публичный интерфейс StudentDao {public list <toodtlect> selectallstudents (); public int insertStudent (студент);} Наконец, напишите StudentDaoImpl.java для реализации этого интерфейса. Обратите внимание, что вы должны унаследовать класс mybatisutil.java:
Общедоступный класс uptementdaoimpl расширяет mybatisutil реализует StudentDao {Private Static Linting Namesspace = "StudentMapper."; Public List <toodtallyStudents () {sqlSession ss = getSqlSession (); list <Trade> list = ss.selectlist (namespace + "select stursents"); ss.clase (); () public Studstud; () aterbose etsiledtud; ();); Студент) {sqlSession ss = getSqlSession (); int i = ss.Insert (пространство имен + "insertStudent", Student); // ss.commit (); ss.close (); return i;}} Напишите тестовый класс:
Общедоступный Clodedtest {public static void main (string [] args) {StudentDao studentDao = new StudentDaoImpl (); Student Student = new Student (); Student.SetStudentName («jack»); StudentDao.insertStudent (студент); System.out.println («Первичный ключ взимается»: »:« + » Student.getStudentId ()); System.out.println ("---- Отображение студентов ------"); list <toodtlect> StudentList = StudentDao.selectallStudents (); for (int i = 0, length = studentlist.size (); i <length; i ++) system.out.println (studentlist.get (i));}} Результат должен быть пустым.
Я сказал, что этот пример - как обзор, так и введение в наш контент сегодня. Причина этого пуста заключается в том, что операция вставки была сделана, но Mybatis не поможет нам отправить вещи автоматически, так что то, что отображается, естественно пусто. В этом случае вы должны вручную отправить транзакцию с помощью метода Commit () SQLSession, то есть открыть комментарий по строке 17 класса StudentDaoImpl.java.
Чтобы выразить это больше, в дополнение к основной операции вставки Mybatis, этот пример также имеет функцию возврата вставленного первичного идентификатора ключа на основе вставки.
Затем используйте Spring для управления вещами Mybatis, что также является наиболее часто используемой практикой управления вещами в развитии уровня предприятия.
Управлять вещами Mybatis с весной
В Интернете есть много статей, чтобы объяснить это, и я много искал, но либо копировал, и вставьте друг друга, либо не объясняет весь пример ясно. Благодаря этой части я стараюсь объяснить, как использовать Spring для управления вещами Mybatis.
Использование Spring для управления вещами Mybatis, в дополнение к необходимым модульным бобам, контексту, ядрам, ядрам, выражению и общинному общению, также требуется следующее содержание:
(1) Mybatis-Spring-1.x.0.jar, это необходимый пакет JAR для весенней интеграции Mybatis.
(2) могут использоваться пул соединений базы данных, DBCP и C3P0. Я использую друид Алибабы здесь
(3) JDBC, TX, AOP, JDBC в основном не говоря уже. TX и AOP используются, потому что поддержка весной для управления Mybatis достигается через AOP
(4) aopalliance.jar, это необходимый пакет для банка для использования Spring Aop
Приведенный выше пакет JAR будет загружен с использованием Maven. Те, кто не использовал Maven, могут скачать его на CSDN. Вы можете искать это.
В файле конфигурации config.xml из mybatis соединение JDBC можно удалить, и может быть сохранена только часть Typealiases:
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><typeAliases><typeAlias alias="Student" type = "org.xrq.domain.student"/> </typealiases> </configuration>
Позвольте мне упомянуть, что Mybatis другой файл конфигурации studce_mapper.xml не нужно изменять. Далее напишите файл конфигурации пружины, и я называю его Spring.xml:
<? xml version = "1.0" Encoding = "UTF-8"?> <фасоль xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://www.springframework.org/schema/beans" xmlns: context = "http://wwww.springframe. MLNS: tx = "http://www.springframework.org/schema/tx" xmlns: aop = "http://www.springframework.org/schema/aop" xsi: schemalocation = "http://www.springframework.orbema. http://www.springframework.org/schema/beans/spring-beans-4.2.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.x. http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.2.xsdhttp://www.spramework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd"> написано конфигурации аннотации-> <TX: Annotation Transaction-Manager = "TransactionManager"/> <Контекст: Annotation-config/> <context-scan-scan base-package = "org.x.xmance-play-scane-package =" org.xrabese-play-scane-scane = alibaba's Druid --><bean id="dataSource" init-method="init" destroy-method="close"><property name="url" value="jdbc:mysql://localhost:3306/test" /> <property name="username" value="root" /> <property name="password" value="root" /> </bean><bean id = "SQLSessionFactory"> <name = "configlocation" value = "classpath: config.xml" /> <name = "mapperlocations" value = "classpath:*_ mapper.xml" /> <name = "dataSource" ref = "DataSource" /> < /bean> <! name = "dataSource" ref = "dataSource"/> </bean> </beans>
Это в основном включает в себя менеджер транзакций и пул соединений базы данных.
Кроме того, мы видим, что есть SQLSessionFactory. Друзья, которые использовали Mybatis, должны быть знакомы с этим классом. Он используется для настройки среды Mybatis. В SQLSessionFactory есть два атрибута. Как следует из имени, оно представляет местоположение файла конфигурации и местоположение файла отображения. Здесь, пока путь настроен правильно, пружина автоматически загружает эти два файла конфигурации.
Тогда вы хотите изменить, так это класс реализации DAO. В настоящее время вы больше не наследуете предыдущий класс Mybatisutil, но наследуете sqlsessiondaosupport.java от mybatis-spring-1.x.0.jar. Конкретный код заключается в следующем:
@RepositoryPublic Class StudentDaoImpl Extends SQLSessionDaosupport реализует studentdao {private static final String namessment = "StudentMapper.";@Resourcepublic void setsqlSessionFactory (sqlSessionFactory sqlSessionFact) {super.setSeSsessionFactory (sqlSessionFactory) {super.setseSessionFactory (sqlSessionFactory); SelectAllStudents () {return getSqlSession (). SelectList (namespace + "selectAllStudents");} public int insertStudent (студент) {return getSqlSession (). INSERT (namespace + "INSERTSTUDENT", Студент);}}Здесь используются две аннотации, давайте поговорим о них отдельно.
(1) @Repository, эта аннотация такая же, как @Component, @Controller и наши самые распространенные аннотации @Service, которые могут объявить класс как пружинный боб. Их различия находятся не в определенной семантике, а скорее в позиционировании аннотации. Как упоминалось ранее, приложения на уровне предприятия сосредоточены на концепции иерархического развития, поэтому эти четыре аналогичные аннотации следует понимать следующим образом:
• Аннотация репозитория@соответствует уровню постоянств, а именно слое DAO, который используется для непосредственного взаимодействия с базой данных. Вообще говоря, метод соответствует конкретному оператору SQL
• Annotation@Service, которая соответствует уровню сервиса, а именно уровни обслуживания, является функцией объединения отдельных/множественных операторов SQL. Конечно, если это просто, вы напрямую вызовете метод слоя DAO.
• Аннотация контроллера@, которая соответствует уровню управления, то есть элементом управления в режиме проектирования MVC. Его функция состоит в том, чтобы получать запросы пользователей, вызовать различные службы для получения данных в соответствии с запросами, и объединить данные в соответствии с требованиями и завернуть их на переднюю часть.
• Аннотация компонента@, которая больше соответствует концепции компонента. Если фасоль не знает, что он принадлежит слою, вы можете использовать аннотацию @Component для аннотации.
Это также отражает одно из преимуществ аннотаций: видение имени и знание значения, то есть, видя эту аннотацию, вы примерно знаете функцию этого класса, то есть его позиционирование во всем проекте.
(2) @Resource, эта аннотация и аннотация @Autowired имеют одинаковое значение, и оба могут автоматически вводить атрибуты атрибутов. Поскольку SQLSessionFactory является ядром Mybatis, он был объявлен в Spring.xml. Следовательно, фасоль с идентификатором «sqlSessionFactory» вводится здесь через аннотацию @Resource. После этого SQLSession можно получить с помощью метода getSqlSession (), и данные добавляются, удаляются, изменяются и проверяются.
Наконец, это не более чем написание тестового класса для тестирования:
Public Class StudentTest {public static void main (string [] args) {ApplicationContext ac = new ClassPathxMlapplicationContext ("Spring.xml"); StudentDao CloudedDao = (ClondDao) ac.getbean ("studentDaoimpl"); студент -студент = новый студент (); STUDY.SetStudName ("lucy"); StudentDao.insertStudent (студент); System.out.println ("j =" + j + "/n"); System.out.println("---DiSplay студенты ------"); List <toodtlect> student = studyDao.selectallStudents (); for (int i = 0, length = studentlist.size (); i <length; i ++) system.out.println (studentlist.get (i));}} Поскольку класс StudentDaoImpl.java использует аннотацию @Repository и не указывает псевдоним, название StudentDaoImpl.java в весеннем контейнере является «первая буква нижняя часть + оставшиеся буквы», то есть «StudentDaoImpl».
После запуска программы вы можете видеть, что новый студент был пройден на консоли, то есть студент был непосредственно вставлен в базу данных. Не было никакого коммита или отката во всем процессе. Все они были реализованы к весне. Это использовать Spring, чтобы управлять вещами на Mybatis.
PostScript
В этой статье рассматривается основное использование Mybatis и использует Spring для управления вещами на Mybatis, и приводит более подробные примеры кода. Друзья в нуждающихся могут изучать это в соответствии с кодом. Основываясь на этой статье, я напишу статью позже, чтобы объяснить реализацию управления вещью Multi-Data между отдельными таблицами и несколькими таблицами. Это требование также является общим требованием на предприятиях и приложениях.