mybatis를 사용하는 대부분의 개발자는 XML 파일에 많은 양의 SQL을 작성하는 것입니다. 특수 비즈니스 로직 SQL 외에도 유사한 구조를 갖는 많은 SQL도 있습니다. 또한 데이터베이스 테이블 구조가 변경되면 해당 모든 SQL 및 엔티티 클래스를 변경해야합니다. 이 워크로드와 효율성의 영향은 프로그래머 및 실제 프로그래머 추가, 삭제, 수정 및 점검 사이의 장벽 일 수 있습니다. 현재, 장군 매퍼는 ...
보편적 인 매퍼는 무엇입니까?
General Mapper는 MyBatis를 기반으로 한 플러그인으로 단일 테이블의 추가, 삭제, 수정 및 검색 문제를 해결합니다. 개발자는 SQL을 작성하거나 DAO에 메소드를 추가 할 필요가 없습니다. 엔티티 클래스를 잘 작성하는 한 해당하는 방법을 추가, 삭제, 수정 및 검색하는 방법을 지원할 수 있습니다.
사용 방법
MySQL을 예로 들어, 그러한 테이블이 있다고 가정합니다.
테이블`test_table '(`id` bigint (20) not null auto_increment,`name` varchar (255) 기본값',`create_time` dateTime 기본 NULL,`create_user_id` varchar (32) default null,`update_time 'datetime null,`update_user_id` varcar (32). `is_delete` int (8) 기본 널, 기본 키 (`id`)) 엔진 = innodb auto_increment = 1 기본 charset = utf8;
기본 키는 ID이며 자체적으로 증가합니다. 다음은 보편적 인 맵퍼를 사용하는 방법을 소개하는 예입니다.
Maven 의존성
<!!
SpringMVC 구성
<!-일반 맵퍼-> <beanclass = "tk.mybatis.spring.mapper.mapperscannerconfiger"> <propertyname = "basePackage"value = "cn.com.bluemoon.bd.service.spider.dao"/> <pospername = "properters"> mappser = tk.mybatis.mapper.mator </value> </property> </bean>
tk.mybatis.spring.mapper.MapperScannerConfigure 여기에서 원래 mybatis org.mybatis.spring.mapper.MapperScannerConfigurer 교체하는 데 사용됩니다.
사용 가능한 매개 변수 :
대부분의 경우 이러한 매개 변수는 사용되지 않으며 특별한 상황이 있으면 직접 연구 할 수 있습니다.
엔티티를 작성하는 방법
하나의 원칙을 기억하십시오 : 엔티티 클래스의 필드 수> = 데이터베이스 테이블에서 작동 해야하는 필드 수. 기본적으로 엔티티 클래스의 모든 필드는 테이블의 필드로 작동하며 추가 필드가 있으면 @Transient 주석을 추가해야합니다.
@table (name = "test_table") public class testtablevoimplements serializable {private static final long serialversionuid = 1l; @id @generatedValue (generator = "jdbc") private long id; @transient 개인 문자열 userId; 개인 문자열 이름; 개인 타임 스탬프 CreateTime; 개인 문자열 createUserId; 개인 타임 스탬프 업데이트 타임; 개인 문자열 updateUserId; 개인 정수 ISDELETE; // 생략, 설정 ...}설명 :
Dao를 쓰는 방법
전통적인 mybatis 쓰기에서 DAO 인터페이스는 Mapper 파일과 연관되어야합니다. 즉, DAO 인터페이스에서 메소드를 구현하려면 SQL을 작성해야합니다. 일반적으로 Mapper는 풍부한 방법을 갖기 위해 공통 인터페이스를 상속하면됩니다.
제네릭 맵퍼를 상속하면 제네릭을 지정해야합니다
public Interface testtabledaoextends mapper <testtablevo> {}Mapper를 상속하면 상속 된 Mapper에는 모든 일반적인 맵퍼가 있습니다.
선택하다
방법 : list <t> select (t record);
참고 : 엔티티의 속성 값을 기반으로 한 쿼리와 쿼리 조건에 동일한 부호를 사용합니다.
방법 : t selectByPrimaryKey (객체 키);
참고 : 기본 키 필드를 기반으로 한 쿼리. 메소드 매개 변수에는 완전한 기본 키 속성이 포함되어야합니다. 쿼리 조건은 동일한 부호를 사용합니다.
방법 : list <t> selectall ();
참고 : 모든 결과 쿼리, select (null) 메소드는 동일한 효과를 달성 할 수 있습니다.
방법 : t selectone (t record);
참고 : 엔티티의 속성에 따라 쿼리하면 하나의 반환 값 만있을 수 있으며 여러 결과가 발생합니다. 쿼리 조건은 동일한 부호를 사용합니다.
방법 : int selectCount (t record);
참고 : 엔티티의 총 속성 수를 쿼리하고 쿼리 조건에 동일한 부호를 사용하십시오.
끼워 넣다
방법 : int insert (t record);
참고 : 엔티티를 저장하면 NULL 속성도 저장되며 데이터베이스 기본값이 사용되지 않습니다.
방법 : int insertselective (t record);
참고 : 엔티티를 저장하면 NULL 속성이 저장되지 않으며 데이터베이스 기본값이 사용됩니다.
업데이트
방법 : int updateByPrimaryKey (t record);
참고 : 기본 키에 따라 엔티티의 모든 필드 업데이트를 업데이트하면 NULL 값이 업데이트됩니다.
방법 : int updateByPrimaryKeySelective (t record);
설명 : 기본 키에 따라 속성이 NULL이 아닌 값을 업데이트합니다.
삭제
방법 : int delete (t record);
참고 : 엔티티 속성에 따라 조건으로 삭제하고 쿼리 조건에 동일한 부호를 사용하십시오.
방법 : int deletebyprimarykey (객체 키);
참고 : 기본 키 필드에 따라 삭제하려면 메소드 매개 변수는 완전한 기본 키 속성을 포함해야합니다.
예제 방법
방법 : list <t> selectByexample (객체 예);
설명 : 예제 조건에 따른 쿼리
키 포인트 :이 쿼리는 예제 클래스를 통해 쿼리 열을 지정하고 selectProperties 메소드를 통해 쿼리 열을 지정합니다.
방법 : int selectCountByExample (객체 예);
설명 : 예제 조건에 따라 총 숫자를 쿼리하십시오
방법 : int updatebyexample (@param ( "레코드") t 레코드, @param ( "example") 객체 예제);
설명 : 예제 조건에 따라 엔티티 레코드에 포함 된 모든 속성을 업데이트하면 널 값이 업데이트됩니다.
방법 : int updateByExamplesSelective (@param ( "record") t record, @param ( "example") 객체 예제);
설명 : 예제 조건에 따라 엔티티 레코드 업데이트가 null이 아닌 속성 값을 포함합니다.
방법 : int deletebyexample (객체 예);
설명 : 예제 조건에 따라 데이터를 삭제합니다
코드에 사용됩니다
서비스에 DAO를 주입하면 사용할 준비가되었습니다.
@autowiredprivate testtabledao testtabledao;
다음은 일반적인 글쓰기 방법입니다.
새로운
testtablevo vo = new testtablevo (); // vo의 설정 속성을 생략합니다 ... int row = testtabledao.insertselective (vo);
개정하다
testtablevo vo = new testtablevo (); // vo의 설정 속성을 생략합니다 ... int row = testtabledao.updateByPrimaryKeySelective (VO);
싱글을 쿼리하십시오
testtablevo vo = new testtablevo (); vo.setid (123l); testtablevo result = testtabledao.selectone (vo);
조건부 쿼리
// 예시 예방 예제 = 새 예제 (testTableVo.class); // criteExample.criteria criteria = example.createCriteria (); // 조건 기준을 추가합니다. andequalto ( "isdelete", 0); criteria.andlike ( "name", "%ABC123%");
요약
일반 매퍼의 원칙은 반사를 통해 엔티티 클래스의 정보를 얻고 해당 SQL을 구성하는 것입니다. 따라서, 우리는 단지 엔티티 클래스 만 유지하면서 복잡하고 변하기 쉬운 요구에 대처할 수있는 편리함을 제공합니다. 위의 설명은 일반 매퍼의 간단한 사용 일뿐입니다. 실제 프로젝트에서는 비즈니스를 기반으로 일반 맵퍼를 기반으로 더 크고 더 일반적이고 더 잘 사용하는 방법을 여전히 캡슐화해야합니다.
스프링 부팅 구성으로
Maven
<!--mybatis--><dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.1</version></dependency><!--mapper--><dependency> <groupId>tk.mybatis</groupId> <아티파티드> 맵퍼 스프링-부트 스타터 </artifactid> <버전> 1.1.4 </version> </fectionency>
Application.Properties 구성
#Mapper#Mappers Comma 분리 Mappper.mappers = tk.mybatis.mapper.common.mappermapper.not-empty = falsemapper.identity = mysql
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.