mybatis-plus의 특성은 무엇입니까?
1. 코드 생성 2. 조건부 생성자
저에게 주된 목적은 강력한 조건부 빌더를 사용하는 것입니다.
사용하는 빠른 단계 :
1. POM 파일 종속성을 추가하십시오
<pectionency> <groupId> org.apache.velocity </groupid> <artifactid> velocity </artifactid> <버전> 1.7 </version> </fectionency> <pectionement> <groupid> com.baomidou </groupid> <artifactid> mybatis-plus </artifactid> 2.0.1 </dependent>
참고 : Mybatis-Plus는 Mybatis 및 Mybatis-Spring의 종속성을 자동으로 유지하므로 버전 충돌을 피하기 위해 후자를 소개 할 필요가 없습니다.
2. 구성 파일을 수정하십시오
mybatis의 sqlsessionfactory를 mybatis-plus로 바꾸십시오. mybatis-plus는 일부 기능 확장 만 수행합니다.
<bean id = "sqlsessionFactory"> <property name = "dataSource"ref = "dataSource"/> <!-매핑의 자동 스캔-> <property name = "mapperlocations"value = "classpath : mybatis/*. xml"/> <value " <property name = "inftealiasespackage"value = "com.baomidou.springmvc.model.*"/> <property name = "플러그인"> <array> <!-paging plugin configuration-> <bean id = "pagination interceptor"> <property name = "decienttype"value = "mysql"/bean> </bean> </bean> </bean> </bean> 주입-> <속성 이름 = "GlobalConfig"ref = "GlobalConfig" /> < /bean>
위 구성에서는 MyBatis의 정기적 인 구성 외에도 추가 구성 및 글로벌 Pagination 플러그인 구성이 있습니다. Mybatis-Plus는 Pagination 플러그인을 매우 편리하게 사용하며 다음과 같이 글로벌 구성이 있습니다.
<bean id = "globalConfig"> <!-auto-> 0` ( "데이터베이스 ID 자체 인증") 입력->`1` (사용자 입력 ID ") id_worker->`2` ("Global Cight ID ") UUID->`3` ("Global Id ")-> <속성 이름 ="idtype "value ="2 "! Oracle->`Oracle` db2->`db2` h2->`h2` hsql->`hsql` sqlite->`sqlite` postgre->`postgresql` sqlserver2005->`sqlser2005` sqlserver->``sqlser` <! 이 항목-> <!-<property name = "dbtype"value = "Oracle" />-> <!-글로벌 테이블은 밑줄 이름에 맞습니다-> <property name = "dbcolumnunderline"value = "true" /> < /bean>이 시점에서 구성 작업이 완료 되더라도 간단한 예제를 사용하여 사용을 경험하겠습니다.
1. 새 사용자 테이블 만들기 :
@tablename ( "사용자") 공개 클래스 사용자는 시리얼이 가능성 { / ** 사용자 ID* / 개인 Long ID를 구현합니다. / ** 사용자 이름*/ 개인 문자열 이름; / ** 사용자 연령*/ 개인 정수 연령; @TableField (Events = False) 개인 문자열 상태;}여기에는 두 가지 주석이 있습니다. 첫 번째는 @tablename ( "사용자")이며 데이터베이스 테이블과의 연관성을 지정합니다. 여기에 주석은 데이터베이스에 해당하는 사용자 이름이 지정된 표가 있어야하며 데이터 테이블의 열 이름은 사용자 클래스의 속성이어야합니다. 사용자 클래스에 있지만 사용자 테이블에없는 속성의 경우, 사용자 클래스에서 속성을 제외하려면 두 번째 주석 @TableField (Evential = false)가 필요합니다.
2. 새 DAO 레이어 인터페이스 usermapper 만들기 :
/*** 사용자 테이블 데이터베이스 제어 계층 인터페이스*/public interface usermapper 확장 Basemapper <user> {@select ( "selectuserList") 목록 <user> selectUserList (Pagination Page, String State);}DAO 인터페이스는 많은 캡슐화 된 방법을 사용할 수 있도록베이스 메이프를 구현해야합니다. 또한 방법을 직접 쓸 수도 있습니다. @Select 주석은 세 번째 단계에서 참조 된 usermPorper 파일을 나타냅니다.
3. 새 usermapper 구성 파일 생성 :
<? xml version = "1.0"encoding = "utf-8"?> <! doctype mapper public "-// mybatis.org//dtd Mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <<1mapper namespace = "com.baomidou.springmvc.mapper.system.usermapper"> <!-일반 쿼리 결과 열-> <sql id = "base_column_list"> id, name, age </sql> <select id = "selectUserList"resultType = "user"> seel sys_user state}
4. 새 서비스 계층 작성 클래스 사용자 서비스 :
/** * * 사용자 테이블 데이터 서비스 계층 인터페이스 구현 클래스 */@ServicePublic Class Userservice 확장 ServiceMpl <usermapper, user> {public page selectUserPage (page <user> page, String State) {page.setRecords (baseMapper.SelectUserList (page, state)); 반환 페이지; }}Userservice는 ServiceMPL 클래스를 상속합니다. mybatis-plus는 이런 식으로 Usermapper를 우리에게 주입합니다. 이런 식으로, 우리는 기본적으로 서비스 계층에서 제공 한 많은 방법을 사용할 수 있으며, 데이터베이스를 작동하기 위해 DAO 계층에 쓴 방법을 호출 할 수도 있습니다. 페이지 클래스는 MyBatis-Plus가 Pagination Function을 제공하고 Pagination을 상속하는 모델이므로 다른 페이지 클래스를 직접 작성할 필요가 없습니다.
5. 새로운 컨트롤러 계층을 만듭니다. usercontroller
@ControllerPublic Class UserController 확장 BaseController {@autowired private iuserservice userervice; @ResponseBody @RequestMapping ( "/page") public Object SelectPage (모델 모델) {페이지 페이지 = 새 페이지 (1,10); page = userervice.selectuserpage (page, "normal"); 반환 페이지; }위의 기본 기능이 완료됩니다. 조건부 빌더를 살펴 보겠습니다.
mybatis-plus의 조건부 빌더
먼저 조건부 빌더 인스턴스의 단순하고 실용성을 살펴 보겠습니다.
public void test () {entityWrapper ew = new EntityWrapper (); ew.setentity (new user ()); 문자열 이름 = "Wang"; 정수 나이 = 16; ew.where ( "name = {0}", name) .andnew ( "age> {0}", age) .orderby ( "age"); list <user> list = userervice.selectlist (EW); Page2 = userervice.selectpage (page, ew); }여기서 조건부 래퍼 클래스 엔티티 wrapper는 SQL 문을 조립하는 데 사용됩니다. 원칙은 또한 이해하기 쉽습니다. 위의 코드에서 첫 번째 목록 쿼리의 결과는 데이터베이스의 모든 레코드를 name = wang 및 16 세> 나이로 쿼리하고 나이에 따라 정렬하는 것입니다. 두 번째 쿼리는 다른 페이지 매김 함수를 추가하는 것입니다.
기본적으로 EntityWrapper를 사용하면 일부 조건부 쿼리를 완료 할 수 있지만 쿼리 메소드가 매우 자주 사용되면 UsermPaper 직접 작성하는 것이 좋습니다.
사용자 정의 매퍼 메소드가 EntityWrapper를 사용할 수 있습니까? 물론 가능합니다.
이것의 예는 문서에 나와 있습니다.
1. Mappper의 정의 :
list <user> selectmypage (rowbounds rowbounds, @param ( "ew") 래퍼 <t> 래퍼);
2. 맵퍼 파일에서 정의 :
<select id = "selectmypage"resulttype = "user"> select * from user $ {ew.sqlsegment} </select>EntityMapper의 조건부 스 플라이 싱의 경우 기본적으로 SQL에서 일반적으로 사용되는 Orderby 및 기타 구문을 기본적으로 구현할 수 있으며 특정 구성 방법을 유연하게 결합 할 수 있습니다.
@testpublic void testtsql11 () { / * * Query 사용법 메소드가있는 엔티티 결과를 확인하려면 * / ew.setentity (새 사용자 (1)); ew.where ( "name = {0}", " 'zhangsan'"). 및 ( "id = 1") .ornew ( "status = {0}", "0"). .andNew ( "PWD = 11"). ISNOTNULL ( "N1, N2"). ISNULL ( "N3") .Groupby ( "X1"). GroupBy ( "X2, X3") .Kaving ( "X1 = 11"). System.out.println (ew.getSqlSegment ());}참조 문서
Mybaits-Plus 공식 문서
요약
위의 것은 편집자가 소개 한 Mybatis Plus 도구에 대한 빠른 소개 자습서입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 질문이 있으시면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다!