봄과 미바 티스 통합
통합 아이디어
Spring은 싱글 톤을 통해 sqlsessionfactory를 관리해야합니다.
Spring 및 Mybatis는 프록시 객체를 생성하고 sqlsessionfactory를 사용하여 sqlsession을 생성합니다. (Spring 및 Mybatis 통합이 자동으로 완료됩니다)
지속성 층의 맵퍼는 스프링으로 관리해야합니다.
환경을 통합합니다
새로운 Java 프로젝트 만들기 (실제 개발 된 엔지니어링 구조에 가깝습니다)
JAR 패키지 :
Mybatis3.2.7 JAR 패키지
Spring3.2.0 Jar 패키지
Mybatis 및 Spring Integration 패키지 : 초기 Ibatis 및 Spring Integration은 Spring에 의해 제공되었으며 현재 Mybatis 및 Spring Integration은 Mybatis가 제공합니다.
모든 JAR 패키지 (SpringMVC 포함)
엔지니어링 구조
1 단계 : sqlsessionFactory를 통합하고 구성합니다
ApplicationContext.xml에서 SQLSESSIONFACTORY 및 데이터 소스를 구성하십시오
sqlsessionfactory는 Mybatis와 Spring의 통합 패키지 아래에 있습니다.
<!-구성 파일로드-> <context : property-placeholder location = "classpath : db.properties" /> <!-데이터 소스, dbcp-> <bean id = "dataSource"Destion "value ="driverClassName "value ="$ {jdbc.driver} " /> value = "$ {jdbc.url}" /> <property name = "username"value = "$ {jdbc.username}" /> <property name = "password"value = "$ {jdbc.password}" /> <property name = "maxactive"value = "10" /> <property name = "maxidle"5 " /> < /bean>> < /bean>>. -> <bean id = "sqlsessionFactory"> <!-myBatis configuration 파일을로드-> <속성 이름 = "configlocation"value = "mybatis /sqlmapconfig.xml" /> <!-데이터 소스-> <property name = "dataSource"ref = "dataSource" /> bean>원래 개발 (봄과 통합 후)
sqlmap/user.xml
sqlmapconfig.xml에서 user.xml을로드하십시오
DAO (구현 클래스 상속 SCLSESSIONDAOSUPPORT)
이전에는 DAO 인터페이스 구현 클래스가 SQLSESSOINFactory를 주입하여 스프링을 통해 주입해야했습니다.
여기서 Spring을 사용하여 구성 방법을 선언하고 DAO의 Bean을 구성합니다.
userdaoimpl이 클래스 상속 sqlsessiondaosupport를 구현하도록하십시오
DAO를 구성하십시오
ApplicationContext.xml에서 DAO 인터페이스를 구성하십시오
<!-원래 DAO 인터페이스-> <bean id = "userDao"> <property name = "sqlsessionFactory"ref = "sqlsessionFactory"/> </bean>
테스트 절차
source_folder/userdaoimpltest.javapublic class userdaoimpltest {private applicationcontext applicationcontext; // setup에서 스프링 컨테이너 가져옵니다 @beforepublic void setup () 예외 {ApplicationContext = new classPathXmlapplicationText ( "classPathPath : Spring/ApplicatContxt.xml"; testfinduserByid ()는 예외를 {userDao userDao = (userDao) applicationcontext.getBean ( "userDao"); // 전화 사용자 user = userdao.finduserById (1); system.out.out.out.out.out.out.out.out.out.out.out.out.out.out.out.out.out.out.out.out.out.println;매퍼 에이전트 개발
usermapper.xml 및 usermapper.java
이전 프로젝트를 복사하고 패키지 경로를 삭제하십시오.
MapPerfactoryBean을 통해 프록시 객체를 만듭니다
usermapper는 인터페이스 유형이 아니기 때문에 인터페이스 유형을 생성하려면 mapperfactoryBean을 사용해야합니다.
이 방법의 문제 :
각 맵퍼에 대해 문제를 해결해야합니다.
MapperscannerConfigurer를 통한 맵퍼 스캔 (권장)
*베이스 패키지 속성을 통해 맵퍼 스캔 경로를 구성한 후 SQLMAPPERCONFIG.XML에서 스캔 경로를 구성 할 필요가 없습니다.
SQLSESSIONFACTORYBEANNAME 속성은 SQLSESSIONFACTORY 속성이 구성되면 데이터베이스 구성 파일 및 데이터 소스 구성이 먼저로드되지 않기 때문에 여기에서 사용됩니다 (DB.Properties)
테스트 코드
역 엔지니어링
Mybaits는 프로그래머에게 SQL 문을 자체적으로 작성해야합니다. Mybatis 공무원은 MyBatis 실행에 필요한 코드를 자동으로 생성하기 위해 리버스 엔지니어링을 제공합니다 (Mapper.java, Mapper.xml, Po ..)
실제 엔터프라이즈 개발에서 일반적으로 사용되는 역 엔지니어링 방법 : 데이터베이스 표로 인해 Java 코드를 생성합니다.
리버스 엔지니어링을 다운로드하십시오
사용 방법 (사용 가능)은 리버스 엔지니어링을 실행하십시오
Java 프로그램 방법을 사용하고 개발 도구에 의존하지 않는 것이 좋습니다.
코드 구성 파일 생성 (수정 해야하는 4 개의 장소)
PO 클래스가 생성되는 위치 : cn.itcast.ssm.po
Mapper 매핑 파일이 생성되는 위치 : cn.itcast.ss.mapper
Mapper 인터페이스의 위치가 생성되었습니다 : cn.itcast.ss.mapper
데이터베이스 테이블 지정 :
<TABLE TABLENAME = "항목"> </table> <TABLE TABLENAME = "ORDERS"> </table> <TABLE TABLENAME = "ORDERDETAIL"> </table> <TABLE TABLENAME = "USER"> </TABLE> <? XML 버전 = "1.0"accoding = "utf-8"?> <! DocType GeneratorConfigurationPublic "-// mybatis. // mybat. Generator Configuration 1.0 // en ""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd "> <GeneratorConfiguration> <context id ="testTables "TargetRuntime ="myBatis3 "> <CommentGenerator> <!-자동으로 생성되는 댓글을 제거할지 여부 : 예, 거짓.> 이름 = "suppressAllComments"value = "true"/> </commentGenerator> <!-데이터베이스 연결에 대한 정보 : 드라이버 클래스, 연결 주소, 사용자 이름, 암호-> <jdbcConnection driver class = "com.mysql.jdbc.driver"ConnectionUrl = "jdbc : // localhost : 3306/mybatis" userid = "root"password = "mysql"> </jdbcconnection> <!- <jdbcconnection driver class = "oracle.jdbc.oracledriver"connecturl = "jdbc : oracle :@127.0.0.1 : 1521 : yycg"usericg "yycg"yycg "> </jdb" -> <!-기본 거짓, JDBC 소수 및 숫자 유형은 정수로 해결됩니다. 사실 일 때, JDBC 소수점 및 숫자 유형은 java.math.bigdecimal-> <javatyperesolver> <속성 이름 = "ForceBigDecimals"value = "false" /> < /javatyperesolver> <!-TargetProject : PO 클래스의 위치-> <Javamodelgenerator TargetPackage = "cn.itcast.ss.sm.po"targetProject = "./ src"> <!-enablesubPackages : 패키지의 접미사로 스키마를 사용할지 여부-> <속성 이름 = "enablesubPackages"value = "false" /<!-데이터베이스에서 반환 된 값이 정리 된 후-> <속성 이름 = "value" /> </javamodelgenerator> <!-TargetProject : 맵퍼 맵 파일이 생성되는 위치-> <sqlmapgenerator targetpackage = "cn.itcast.ssm.mapper"targetProject = "./ src"> <!-enableSubPackages : schema가 패키지의 접근이 될지 여부 "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" /> </sqlMapGenerator> <!-TargetPackage : Mapper 인터페이스 생성의 위치-> <javaclientGenerator type = "XMLMAPPER"TargetPackage = "cn.itcast.ss.mapper"targetProject = "./ SRC"> <!-enablesubpackages : <property name = " value = "false"/> </javaclientgenerator> <!-데이터베이스 테이블을 지정합니다-> <table tablename = "items"> </table> <table tablename = "orders"> </table> <table tablename = "OrderDetail"> </table> <table tabename = "user"> </context> </generatorconfiguration>
생성기를 실행하십시오
생성 된 코드
생성 된 코드를 사용하십시오
생성 된 프로젝트에서 생성 된 코드를 자신의 프로젝트에 복사해야합니다.
ItemsMapper의 테스트 방법
// 사용자 정의 조건 쿼리 @testpublic void testelectbyexample () {itemsexample itemsexample = new itemsexample (); // criteria itemsexample.criteria = itemsexample.createcriteria (); criteria.andnameequalto ( "Notebook 3"); itemsmapper.selectbyexample (itemsexample); system.out.println (list);} // query @testpublic void를 기반으로 한 기본 키를 기반으로합니다. = 새 항목 (); items.setName ( "mobile"); items.setPrice (999f); itemsMapper.Insert (items);} // 데이터 업데이트 @TestPublic void testUpdateByPrimaryKey () {// 모든 필드 업데이트 항목을 업데이트해야합니다. 항목을 업데이트 할 필요가 있습니다. Cup "); itemsmapper.updatebyPrimarykey (항목); // 들어오는 필드가 비어 있지 않으면이 메소드를 배치 업데이트에 사용하십시오. 먼저 쿼리 한 다음 //itemsmapper.updateByPrimaryKeySelective (record);} 업데이트 할 필요가 없습니다.위의 것은 Spring과 Mybatis의 통합 및 역 엔지니어링에 대한 간략한 분석으로 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!