mybatis 만 사용하여 물건을 관리하십시오
Mybatis의 기사에 관련 내용을 작성했습니다. 여기서 나는 가장 간단한 데모를 계속 쓸 것입니다. 전에 mybatis의 내용을 검토합시다. 먼저 테이블을 만들고 간단한 학생 테이블을 만듭니다.
테이블 학생 생성 학생 (Student_id int Auto_increment, Student_name Varchar (20) NOT NULL, 1 차 키 (Student_ID))
Entity Class Student.java 만들기 :
공개 클래스 학생 {private int studentId; private student inditiorname; public int getStudentId () {return studentId;} public void setStudentId (int studentId) {this.studentId = windentId;} 공개 문자열 getStudentName () {retud studentname;} public void setStudentName (String StudentName) {this.studentname;} toString () {return "return"repodent {[studentId : " + studentId +"], [StudentName : " + StudentName +"]} ";}} 더 많이 말하면 엔티티 클래스에 대한 toString () 메소드를 재정의하고 각 (또는 주요 속성)를 인쇄하는 것이 권장되는 접근법입니다. 다음은 기본 JDBC 구성을 포함하는 config.xml입니다.
<? 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> <typealias =" " type = "org.xrq.domain.student"/> </intlealiases> <환경 기본값 = "개발"> <환경 ID = "개발"> <transactionManager type = "jdbc"/> <dataSource type = "pooled"> <속성 이름 = "driver"value = "com.mysql.jdbc.driver"/> value = "jdbc : mysql : // localhost : 3306/test"/> <property name = "username"value = "root"/<property name = "password"value = "root"/> </datasource> </환경> </환경> <mapper> <mapper resource = "withy_mapper.xml"/>
그런 다음 Student_mapper.xml, 주로 특정 SQL 문이 있습니다.
<mapper namepace = "studentmapper"> <resultmap type = "학생"id = "StudentMap"> <id councle = "student_id"property = "studentId"jdbctype = "integer" /> <result column = "student_name"property = "studentname"jdbctype = "varchar" /> < /resultmap> <selectall id = "selectall id =" resultmap = "StudentMap"> select student_id, student_id, student_name; </select> <insert id = "insertStudent"usertGeneratedKeys = "true"keyproperty = "studentId"parameterType = "Student"> inthing in winding (windent_id, student_name) value ( #{StudentId, JDBCType = integer}, #{{{{{{{{{{{{{{whitudlegertype = "Student"> jdbctype = varchar}); </insert> </mapper> 기본 mybatis 요소를 만드는 데 사용되는 mybatisutil.java를 만듭니다. 후속 클래스는이 클래스를 상속합니다.
공개 클래스 mybatisutil {보호 된 정적 sqlsessionfactory ssf; 보호 된 정적 리더 리더; static {try {reader = resources.getResourceAsreader ( "config.xml"); ssf = new sqlsession actortorybuilder () build () catch (ioexception e)}}}}}}}; sqlsession getSqlSession () {return ssf.opensession ();}} 엔터프라이즈 수준 개발 요구 사항 :
1. 별도의 정의 및 구현
2. 계층화 된 개발, 일반적으로 DAO-> 서비스-> 컨트롤러는 특정 상황에 따라 하나 이상의 층/여러 층 또는 하나의 층이 추가된다는 것을 배제하지 않습니다.
따라서 먼저 StudentDao.java 인터페이스를 작성하십시오.
Public Interface StudentDao {public list <Tudling> selectAllStudents (); public int insertstudent (학생 학생);} 마지막으로,이 인터페이스를 구현하려면 StudentDaoimpl.java를 작성하십시오. mybatisutil.java 클래스를 상속해야합니다.
Public Class StudentDaoimpl은 MyBatisutil을 확장합니다. StudentDao {private static final string namespace = "StudentMapper."; public list <tudent> selectAllStudents () {sqlsession ss = getSqlsession (); list <tudent> list = ss.selectList (namespace + "selectAllStudents"; ss. close (); ss.close (); {sqlsession ss = getSqlsession (); int i = ss.Insert (네임 스페이스 + "insertStudent", Student); // ss.commit (); ss.close (); return i;}} 테스트 클래스 작성 :
공개 클래스 학생 테스트 {public static void main (string [] args) {studentDao elight virtubly = new StudentDaoImpl (); 학생 학생 = new Student (); Student.SetStudentName ( "Jack"); StudentDao.insertStudent (Student); System.out.println ( "1 차 키 삽입 IS :" + Student.getStudentId ()); System.out.println ( "---- 디스플레이 학생 ------"); list <tudent> StudentList = StudentDao.SelectAllStudents (); for (int i = 0, length = wheninglist.size (); i <length; i ++) system.out.println (wichinglist.get (i));}} 결과는 비어 있어야합니다.
이 예는 오늘날의 콘텐츠에 대한 리뷰와 소개라고 말했습니다. 이에 대한 이유는 삽입 작업이 완료되었지만 Mybatis는 우리가 자동으로 물건을 제출하는 데 도움이되지 않기 때문에 자연스럽게 비어 있습니다. 이 경우 Commit () 메소드의 SQLSession 메소드를 통해 트랜잭션을 수동으로 제출해야합니다.
더 말하면, 기본 mybatis 삽입 작업 외에도이 예제는 삽입을 기준으로 삽입 된 1 차 키 ID를 반환하는 기능도 있습니다.
다음으로 Spring을 사용하여 MyBatis 물건을 관리하는데, 이는 기업 수준 개발에서 가장 일반적으로 사용되는 관리 실습입니다.
봄으로 mybatis 물건을 관리하십시오
인터넷에는 이것을 설명하기 위해 많은 기사가 있으며, 많은 검색을했지만 서로 복사하여 붙여 넣거나 전체 예제를 명확하게 설명하지 않습니다. 이 부분을 통해 Spring을 사용하여 Mybatis를 관리하는 방법을 설명하려고합니다.
Spring을 사용하여 Spring의 필요한 모듈 Beans, 컨텍스트, 코어, 표현 및 커먼즈 로깅 외에도 MyBatis 사물을 관리하는 다음 컨텐츠도 필요합니다.
(1) mybatis-spring-1.x.0.jar, 이것은 스프링 통합 mybatis에 필요한 JAR 패키지입니다.
(2) 데이터베이스 연결 풀, DBCP 및 C3P0을 사용할 수 있습니다. 나는 여기서 알리바바의 드루이드를 사용하고 있습니다
(3) JDBC, TX, AOP, JDBC는 기본적으로 언급하지 않습니다. TX와 AOP는 MyBatis 사물 관리에 대한 Spring의 지원이 AOP를 통해 달성되기 때문에 사용됩니다.
(4) aopalliance.jar, 이것은 Spring AOP를 사용하는 데 필요한 JAR 패키지입니다.
위의 JAR 패키지는 Maven을 사용하여 다운로드됩니다. Maven을 사용하지 않은 사람들은 CSDN에서 다운로드 할 수 있습니다. 당신은 그것을 검색 할 수 있습니다.
mybatis의 configuration 파일 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> <typealias =" " type = "org.xrq.domain.student"/> </infealiases> </configuration>
MyBatis 다른 구성 파일 Student_mapper.xml을 변경할 필요가 없다고 언급하겠습니다. 다음으로 스프링 구성 파일을 작성하면 spring.xml을 지정합니다.
<? xml 버전 = "1.0"encoding = "utf-8"?> <beans xmlns : xsi = "http://www.w3.org/2001/xmlschema-instance"xmlns = "http://www.springframework.org/schema/beans"xmlns : context = "http://www.spramwork.org/schema mlns : tx = "http://www.springframework.org/schema/tx"xmlns : aop = "http://www.springframework.org/schema/aop"xsi : schemalocation = "http://www.springfrframwork.org/schema/schema/schema/schema/schema http://www.springframework.org/schema/beans/spring-beans-4.2.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-conxt-4.2.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.2.xsdhttp://www.springframework.org/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd http://www.springframework.org/schema/aop http://www.spramework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd"><! 연결 풀, Alibaba 's Druid 사용-> <bean id = "dataSource"init-method = "init"init "destroy-method ="close "> <property name ="url "value ="jdbc : mysql : // localhost : 3306/test "/> <property name ="username "value"/> <valess "password" "</bean> <ban" "/>/bean> <bank. id = "sqlsessionFactory"> <속성 이름 = "configlocation"value = "classpath : config.xml" /> <속성 이름 = "mapperlocations"value = "classpath :*_ mapper.xml" /> <속성 이름 = "dataSource"ref = "dataSource" /> < /bean> <<aid = id = "id ="id = " 이름 = "DataSource"ref = "DataSource"/> </bean> </beans>
여기에는 주로 트랜잭션 관리자와 데이터베이스 연결 풀이 포함됩니다.
또한 SqlSessionFactory가 있음을 알 수 있습니다. mybatis를 사용한 친구는이 수업에 익숙해야합니다. mybatis 환경을 구성하는 데 사용됩니다. sqlsessionfactory에는 구성 및 mapperlocations의 두 가지 속성이 있습니다. 이름에서 알 수 있듯이 구성 파일의 위치와 매핑 파일의 위치를 나타냅니다. 여기서 경로가 올바르게 구성되는 한 스프링은이 두 구성 파일을 자동으로로드합니다.
그런 다음 수정하려는 것은 DAO의 구현 클래스입니다. 현재, 당신은 더 이상 이전 mybatisutil 클래스를 물려받지 않고 mybatis-spring-1.x.0.jar에서 sqlsessiondaosupport.java를 물려받습니다. 특정 코드는 다음과 같습니다.
@RepositoryPublic Class StudentDaoimpl은 sqlsessionDaoSupport를 확장합니다. StudentDao {private static final string namespace = "winditeMapper.";@resourcepublic void setsqlsessionActory (sqlsessionActory sqlsession factory) {supersection vovplic list <};}; selectAllStudents () {return getSqlSession (). selectList (네임 스페이스 + "selectAllStudents");} public int insertStudent (학생) {return getSqlSession (). insert (namespace + "InsertStudent", Student);}}여기에는 두 가지 주석이 사용됩니다. 별도로 이야기 해 봅시다.
(1) @Repository,이 주석은 @Component, @Controller 및 가장 일반적인 @Service 주석과 동일하며, 모두 스프링 콩으로 클래스를 선언 할 수 있습니다. 그들의 차이점은 특정 의미에서는 아니지만 주석의 위치에있어 더 많습니다. 앞에서 언급했듯이 엔터프라이즈 수준의 응용 프로그램은 계층 적 개발 개념에 중점을 두 므로이 네 가지 유사한 주석은 다음과 같이 이해되어야합니다.
•@repository 주석은 데이터베이스와 직접 상호 작용하는 데 사용되는 지속성 계층, 즉 DAO 레이어에 해당합니다. 일반적으로 메소드는 특정 SQL 문에 해당합니다.
• 서비스 계층, 즉 서비스 계층에 해당하는@Service Annotation은 단일/다중 SQL 문을 결합하는 기능입니다. 물론 간단한 경우 DAO 층의 메소드를 직접 호출하게됩니다.
• 제어 계층, 즉 MVC 설계 모드의 컨트롤 레이어에 해당하는@컨트롤러 주석. 이 기능은 사용자 요청을 받고, 다른 서비스를 호출하여 요청에 따라 데이터를 얻고 요구 사항에 따라 데이터를 결합하여 프론트 엔드로 다시 래핑하는 것입니다.
•@구성 요소 주석. 구성 요소의 개념에 더 해당합니다. 콩이 레이어에 속한다는 것을 알지 못하면 @Component 주석을 사용하여 주석을 달 수 있습니다.
이것은 또한 주석의 장점 중 하나를 반영합니다. 이름을보고 의미를 아는 것, 즉이 주석을보고,이 클래스의 기능, 즉 전체 프로젝트의 위치를 대략 알고 있습니다.
(2) @Resource,이 주석 및 @autowired 주석은 동일한 의미를 가지며 속성 속성을 자동으로 주입 할 수 있습니다. sqlsessionfactory는 mybatis의 핵심이므로 Spring.xml에서 선언되었습니다. 따라서 ID "sqlsessionFactory"가있는 Bean은 @Resource 주석을 통해 여기에 주입됩니다. 그 후, sqlsession은 getSqlsession () 메소드를 통해 얻을 수 있으며 데이터가 추가, 삭제, 수정 및 확인됩니다.
마지막으로 테스트를 위해 테스트 클래스를 작성하는 것 이상입니다.
공개 클래스 학생 테스트 {public static void main (string [] args) {ApplicationContext ac = new ClassPathXmlApplicationContext ( "spring.xml"); StudentDao StudentDao = (StudentDao) ac.getBean ( "StudentDaoimpl"; new Student (); Student.SetStudentName ( "lucy"); StudentDao.insertStudent (학생); System.out.println ( "J =" + J + "/n") ;system.out.println("----- 디스플레이 학생 ------"); list <tudent> StudentList = StudentDao.SelectAllStudents (); for (int i = 0, length = wheninglist.size (); i <length; i ++) system.out.println (wichinglist.get (i));}} StudentDaoimpl.java 클래스는 @repository 주석을 사용하고 별칭을 지정하지 않기 때문에 스프링 컨테이너의 StudentDaoimpl.java의 이름은 "첫 번째 문자 소문자 + 남은 글자", 즉 "StudentDaoimpl"입니다.
프로그램을 실행 한 후 신입생이 콘솔에서 통과했음을 알 수 있습니다. 즉, 학생이 데이터베이스에 직접 삽입되었습니다. 전체 프로세스에는 커밋이나 롤백이 없었습니다. 그들 모두는 Spring에 의해 구현되었습니다. 이것은 Spring을 사용하여 Mybatis에서 물건을 관리하는 것입니다.
추신
이 기사는 Mybatis의 기본 사용을 검토하고 Spring을 사용하여 Mybatis의 물건을 관리하고보다 자세한 코드 예제를 제공합니다. 도움이 필요한 친구들은 코드에 따라 연구 할 수 있습니다. 이 기사를 바탕으로 나중에 기사를 작성하여 단일 테이블과 여러 테이블 간의 멀티 데이터의 사물 관리 구현을 설명합니다. 이 요구 사항은 또한 기업 및 응용 프로그램의 일반적인 요구 사항입니다.