MyBatis+PostgreSQL 플랫폼을 처음부터 구축하십시오
최근 프로젝트의 데이터베이스는 PostgreSQL을 사용하여 원래 mybatis를 사용하여 데이터를 작동합니다. 원래 mybatis에는 아무런 문제가 없습니다. 그러나 중국에는 TK.MyBatis 도구가있어 실용적인 일을 많이 할 수 있습니다. 대부분의 경우 원래 mybatis를 처리해야합니다. 기본적으로 잘 구현되었습니다. 이 기사는 PostgreSQL 설치, TK.MyBatis 구성 및이 프로세스에서 발생할 수있는 약간의 사소한 문제를위한 자세한 단계를 공유합니다.
PostgreSQL 설치, 다음 명령을 실행하여 설치하려면 코드를 복사하십시오.
서버가 설치된 후에는 그래픽 인터페이스가있는 클라이언트 PDADMIN도 필요합니다. PostgreSQL의 Windows 버전을 설치 했으며이 주소에서 해당 버전을 찾을 수 있습니다. 설치가 성공하면 시스템 사용자와 데이터베이스 사용자가 기본적으로 생성됩니다. 이름과 암호는 모두 Postgres입니다. 새 사용자를 만들 거나이 계정을 직접 사용할 수 있습니다. 어쨌든, 나는 단지 시험 일뿐입니다. 설치가 완료되면 원격 액세스 문제가 발생할 수 있습니다.
원격 연결 문제, 기본적으로 로컬 연결 만 허용됩니다. 다른 클라이언트가 연결할 수 있도록 구성 파일을 수정할 수 있습니다. 이 파일의 디렉토리는 /etc/postgresql/9.5/main에 있습니다. 이 디렉토리에는 두 개의 파일이 있습니다.
1 : postgresql.conf, 이것은 서버 관련이며, Listen_Address 주소가 있는데,이 주소는 기본적으로 로컬로만 듣는다. 그리고 우리는 그것을 수정할 수있다.
2 : PG_HBA.COF, 이것은 사용자 권한과 관련이 있으며, 게이트웨이 모드에서 구성 할 수있는 연결 관련 구성이 있습니다.
성공적인 연결 후에는 아마도 다음과 같습니다. 데이터베이스, 테이블 및 기타 객체를 만들 수 있습니다.
MyBatis 코드 생성기, 데이터베이스 및 모델 매핑, 이러한 기계적 작업은 기계에 맡겨져 있어야합니다. 여기에서 세부 사항을 참조하십시오.
단일 테이블 CRUD 작업 인 General Mapper는 공개 인터페이스를 추상화 할 수 있으며 Tk.MyBatis가 제공하는 일반 매퍼는 이러한 유형의 문제를 해결하는 데 도움이 될 수 있습니다.
---- Mapper.xml, 충분히 (필드 맵 만 포함)
<mapper namepace = "com.jim.logstashmvc.dao.generated.mapper.productmapper"> <resultmap id = "baseresultmap"type = "com.jim.logstashmvc.dao.generated.entity.product">-경고-@mbggenerated-> <jdbc = " 속성 = "id" /> <result column = "name"jdbctype = "varchar"propertion = "name" /> < /resultmap> < /mapper>
---- 매퍼, 충분히 간단합니다 (맵퍼 인터페이스에서 나온 것입니다)
코드 사본은 다음과 같습니다. Public Interface ProductMapper는 Mapper <Product> {}을 확장합니다.
플러그인, 여기에 페이징 플러그인, SQL 성능 분석 플러그인 등이 있습니다. mybatis와 통합하기가 매우 쉽습니다.
Spring과 통합하는 방법?
생성기 통합 Maven 메소드를 사용하여 코드 생성기를 실행할 수 있습니다.
패키지에 따라 다릅니다
<!-mybatis-> <pectionency> <groupId> org.mybatis </groupid> <artifactid> mybatis </artifactid> <버전> $ {mybatis.version} </version> <! <!-스프링 통합-> <pecient> <groupid> org.mybatis <artifactid> mybatiS-sprity> <버전> $ {mybatis.spring.version} </version> </fectionency> <!-mbg-> <pectionency> <groupId> org.mybatis.generator </groupid> <artifactid> mybatis-generator-core </artifactid> <version> $ {mbg.version} </versity> compile> <pectional> true </septional> </dependency> <!-Pagination-> <pectionency> <groupId> com.github.pageHelper </groupId> <artifActId> pageHelper </artifActId> <버전> $ {pageHelper.Version} </version> </fectionency> <!-<pelection> <pelect> <cruples> <Artifactid> mapper </artifactid> <버전> $ {mapper.version} </version} </version} </version} </version} </version} </version} </dependency> <!-tkmybatis는 jpa annotations-> <pectionency> <groupid> javax.persistence </groupid> <artifactid> persistence-api </version> 1.0 </version> 1.0 </version> </version> </version> </version> </version> 1.0 <groupid> org.postgresql </groupid> <artifactid> postgresql </artifactid> <bersion> 9.3-1102-jdbc41 </version> </fectionency>구성 생성기 플러그인, 구성 파일 경로 지정, 구성 종속성 : 하나는 데이터베이스 드라이버이고 다른 하나는 일반 맵퍼입니다.
<!-MBG-> <Plugin> <groupId> org.mybatis.generator </groupid> <artifactid> mybatis-generator-maven-plugin </artifactid> <버전> $ {mbg.version} </version> <configuration> <configurationFile> $ {basedir} /src/main/resources/generator/generator/generatorconfig.xml </configurationfile> <overwrite> true </overwrite> <verbose> true </verbose> </configuration> <pecienties> <groupid> org.postgresggresgresgresgresgresgresgresgressql <Artifactid> postgresql </artifactid> <bersion> 9.3-1102-JDBC41 </version> </fectionency> <pectionency> <groupid> tk.mybatis </groupId> <artifactID> mapper </artifactid> <$ {mapper.version} </flugin> </flugin>생성기 구성 파일
** 데이터베이스 연결을 구성합니다
** 생성 된 모델, Mapper 및 Mapper.xml의 스토리지 경로 구성
** 생성 할 테이블 정보를 구성합니다
TargetRuntime에 참고하십시오. 여기 MyBatis3simple이 있으며 기본 옵션은 MyBatis3입니다. 일반 맵퍼를 사용하는 경우 봄에 인터페이스를 스캔 할 때이 글을 쓸 수 있습니다.
코드를 다음과 같이 복사하십시오. <ean> <property name = "sqlsessionfactorybeanname"value = "jimsqlsessionfactory"/> <property name = "basepackage"value = "com.jim.logstashmvc.dao.generated.mapper"/> </bean>
그것이 mybatis3 인 경우, 생성 된 mapper.xml 형식은 훨씬 더 복잡합니다. MyBatis3에서 생성 한 Mapper.xml을 사용한 다음 MapperscannerConfigerer를 다음 일반 Mapper 모드로 잘못 구성하여 다음과 같이 유도합니다. 그 이유는 구성 문제로 결정될 수 있습니다 (Mapper.xml의 중복 ID가 아님). 나중에 비 게니처 매퍼의 구성을 연구하겠습니다.
다음과 같이 코드를 복사합니다. Java.lang.illegalargumentexception : Mapped 문장 컬렉션은 이미 com.jim.logstashmvc.dao.generated.mapper.productmapper.selectbyexampleat org.apache.ibatis.session.session.sonce.configuration (configuration.java:837)에 대한 값이 포함되어 있습니다. org.apache.ibatis.session.configuration $ strictmap.put (configuration.java:809)
생성기의 구성은 다음과 같습니다.
코드를 다음과 같이 복사하십시오 : <generatorconfiguration> <properties resource = "config.properties"/> <context targetRuntime = "myBatis3Simple"defaultModelType = "flat"> <속성 이름 = "stategdElimiter"value = "`"/> <속성 이름 = "enddelimiter"value = "em"<em "<em"em. type = "$ {mapper.plugin}"> <속성 이름 = "mappers"value = "$ {mapper.mapper}"/> </plugin> <jdbcconnection driver class = "$ {jdbc.driverclass}"connectionUrl = "$ {jdbc.url}"user} "{jdbc.useName}" password = "$ {jdbc.password}"> </jdbcconnection> <javamodelgenerator targetpackage = "$ {targetModelPackage}"targetProject = "$ {TargetJavAproject}"/> <sqlmapGenerator targetPackage = "mapper" "mapper" "targetRESOURSOURSOUREOURPPER =" <javaclientgenerator targetpackage = "$ {targetMapperPackage}"targetProject = "$ {targetJavapRoject}"type = "xmlMapper"> </javaclientGenerator> <table tablename = "uppu즈즈"DomainObjectName = "ufduct"> </context> </generator configureation as the the the the the the the the the the the the 아래 그림.
MyBatis 통합은 주로 연결 풀 정보, 플러그인, 맵퍼 스캔 및 기타 정보를 구성합니다.
<bean id = "jimdatasource"> <property name = "driver className"value = "$ {jdbc.driverclass}"/> <속성 이름 = "url"value = "$ {jdbc.url}"/> <속성 이름 = "username"value = "$ {jdbc.username}"/> value = "$ {jdbc.password}"/> <속성 이름 = "이니셜 크기"value = "5"/> <속성 이름 = "minidle"value = "10"/> <property name = "maxwait"value = "60000"/> <property name = "timebetweenevictionrunsmillis"value = "60000"/> <property name = "minevictabledletimmillis" value = "3600000"/> <속성 이름 = "validationQuery"value = "select 1"/> <속성 이름 = "testwhileIdle"value = "true"/> <property name = "testonbrong"value = "false"/> <property name = "reastonbronge"value = "false"/> <property name = "testonreturn" "value"</bean> <jimlsetication "> 이름 = "DataSource"ref = "Jimdatasource"/<속성 이름 = "mapperlocations"value = "classPath : mapper/*. xml"/> <property name = "intainiasespackage"value = "com.jim.logstashmvc.dao.generated.entity"/> "plugins"> <eatray>> <propertitice "> <value> divelect = postgresql 합리적 = true supportMethodSarguments = true returnPageInfo = cough params = count = countsql </value> </property> </bean> </array> </bean> <bean> <property name = "sqlsessionCactoryBeanName"value = "jimsqlsessionsfactory"/<jimsqlsessionsfactory "/> value = "com.jim.logstashmvc.dao.generated.mapper"/> </bean>일반 맵퍼 사용 :
• Mapper, 모든 생성 된 맵퍼는 Mapper <t>에서 상속되며 공통 CRUD 작업을 포함하여 기본적으로 공통 맵퍼의 모든 인터페이스를 고정합니다.
• 일반 매퍼 인터페이스의 정의 인 iservice, 우리는 우리 자신의 비즈니스에 따라이 인터페이스를 수정할 수 있습니다.
@ServicePublic Interface Iservice <t> {t selectBykey (Object Key); int save (t entity); int delete (객체 키); int updateall (t entity); int updatenotnull (t Entity); list <t> selectByexample (객체 예); // 다른 사람을 할 일 ...}베이스 서비스, 일반 매퍼의 구현 클래스
공개 초록 클래스베이스 서비스 <t> implements iservice <t> {@autowired Protected Mapper <t> 맵퍼; Public Mapper <t> getMapper () {return Mapper; } @override public t selectBykey (객체 키) {return mapper.selectByPrimaryKey (키); } public int save (t entity) {return mapper.insert (엔터티); } public int delete (객체 키) {return mapper.deletebyPrimaryKey (키); } public int updateall (t entity) {return mapper.updatebyPrimaryKey (엔티티); } public int updatenotnull (t entity) {return mapper.updateByPrimaryKeySelective (엔티티); } public list <T> selectByExample (객체 예) {return mapper.SelectByExample (예); } // 다른 사람을 todo ...}특정 서비스 범주
@ServicePublic Class ProductServiceImpl은 BaseService <Product> 확장 ProductService {@override public list <Product> SelectByProduct (제품 제품, int 페이지, int 행) {example example = 새 예제 (product.class); example.criteria criteria = example.createCriteria (); if (! stringUtils.isblank (product.getName ())) {criteria.andequalto ( "name", product.getName ()); } if (product.getId ()! = null) {criteria.andequalto ( "id", product.getId ()); } pageHelper.startPage (페이지, 행); return selectByExample (예); }}PostgreSQL을 설치하고 원격으로 연결하고 MBG를 통합하여 MAPPER 및 모델을 생성 한 다음 MyBatis를 Spring과 통합 한 다음 최종적으로 목표를 달성하기 위해 General Mapper를 통합합니다. 소량의 코드를 통해 대부분의 작업을 완료하고 반복적 인 작업을 위해 도구로 넘겨줍니다. 그러나 General Mapper는 장점과 단점이 있으며 프로젝트 환경에 따라 균형을 이루어야합니다. 나는 개인적으로 그 혜택이 단점보다 중요하다고 생각합니다.
이 기사에서 인용 :
1. http://www.mybatis.tk/
2. https://github.com/abel533/mybatis-spring
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.