Java API
MyBatis를 구성하고 매핑 파일을 만드는 방법을 알았으므로 기술을 향상시킬 준비가되었습니다. Mybatis의 Java API는 당신이 한 노력을 거두는 곳입니다. 보시다시피, JDBC와 비교할 때 Mybatis는 코드를 크게 단순화하고 간단하고 이해하기 쉬운 유지 관리를 유지합니다. Mybatis 3은 SQL 매핑을 개선하기 위해 많은 중요한 개선 사항을 도입했습니다.
Mybatis 3은 포괄적이고 강력한 Java 구성 API를 기반으로 구축되었습니다. 이 구성 API는 XML 기반 MyBatis 구성의 기초이며 새로운 주석 기반 구성의 기초이기도합니다.
주석은 많은 오버 헤드를 도입하지 않고 간단한 매핑 문을 구현하는 간단한 방법을 제공합니다.
MyBatis Common Annotations의 해당 대상 및 레이블이 표에 나와 있습니다.
| 주석 | 목표 | 해당 XML 태그 |
| @Cachenamespace | 친절한 | <캐시> |
| @cachenamespaceref | 친절한 | <캐시 레프> |
| @결과 | 방법 | <resultmap> |
| @결과 | 방법 | <결과> <id> |
| @하나 | 방법 | <sociation> |
| @많은 | 방법 | <수집> |
@끼워 넣다 @업데이트 @삭제 | 방법 | <삽입> <업데이트> <delete> |
@insertprovider @updateprovider @deleteprovider @selectprovider | 방법 | <삽입> <업데이트> <delete> <select> 동적 SQL을 생성 할 수 있습니다 |
| @param | 매개 변수 | N/A |
| @options | 방법 | 매핑 문의 속성 |
| @선택하다 | 방법 | <select> |
mybatis의 일반적인 주석의 의미 :
@Cachenamespace (size = 512) :이 네임 스페이스 내에서 내장 된 캐시 사용을 정의합니다.
@options (usecache = true, flushcache = false, timeout = 100000) : 일부 쿼리의 옵션 스위치
@param ( "id") : Globally Relified Alias, SQL 문의 쿼리 매개 변수 위치는 더 이상 0, 1, 2, 3 ..., 순차적 인 첨자 형태가 아니라 여기에 정의 된 해당 이름입니다.
@Results는 @Result가 요소로 배열입니다. @Result는 단일 속성 필드의 매핑 관계를 나타냅니다. id = true는 ID 필드가 기본 키임을 의미합니다. Mybatis는 쿼리 중에 필요한 최적화를 제공합니다. 배열의 모든 @Results는 단일 레코드의 매핑 관계를 형성하는 반면 @Results는 단일 레코드 모음입니다. 또한 @Results와 유사한 매우 중요한 주석 @ResultMap이 있습니다.
@select ( "query state"), @insert ( "add state"), @update ( "update state") 및 @delete ( "Delete Statement")는 쿼리, 추가, 업데이트 및 삭제에 대한 작업을 나타냅니다.
다음으로 주석의 사용을 살펴 보겠습니다.
(1) 정기 주석 사용 (사용자 정의지도 작업 없음) :
예 1
// aditor @Insert ( "insertInto awork (사용자 이름, 비밀번호, 이메일, 주소, 전화)" +"value (#{username},#{password},#{email},#{jandse},#{phone}")) 옵션 (usegeneratedKeys = true, keyProperty = "authid", false = 10000) 작가); // 저자 @delete ( "volefrom where id = #{id}")@옵션 (flushcache = false, timeout = 100000) public voiddeleteauthor (@param ( "id") int id); 팁 : 메소드를 호출하기 전에 매퍼를 등록해야합니다.
sessionFactory.getConfiguration (). addMapper (testInteger.class);
또는 mapper.xml에서 <mapper> </mapper>를 구성하십시오
등록 후 Mapper 인터페이스를 가져와 정상적으로 호출하십시오
(2) 맵을 사용자 정의 해야하는 경우 결과 주석을 사용할 수 있습니다.
예 2
// 모든 저자 정보 @Select ( "select * from author") @옵션 (flushCache = false, timeout = 10000, usecache = true) @Results (value = {@result (id = true = "id", property = "id"), @result (property = "username", column = "username"), @result (colmbest = ""password ")). @result (property = "email ="column = "email"), @result (property = "address", column = "add = 10000, usecache = true) @results (value = {@result (id = true, column = "id", property = "id"), @result (property = "username", column = "username"), @result (property = "propption ="prodgpt "), @result (property ="resign = "emboy", @property = "" "), @result (property = "phone", column = "phone")}) 공개 저자 findauthorByid (@param ( "id") intid); 여러 쿼리로 반환 된 결과 세트 구조가 동일하면 @ResultMap을 사용하여 리턴 구조를 정의 할 수 있습니다. 이 주석을 사용하면 맵핑 파일에서 결과 맵을 구성해야합니다. @ResultMap (value = "name")은 매핑 파일의 결과map id입니다. 이러한 방식으로 구성 파일에 <mapper>에 구성 파일을 등록하고 인터페이스에서 @ResultMap을 사용하여 다음과 같이 구성 파일의 결과map id를 참조하십시오.
예 3
selfmapper.xml
// 각 레코드 라인은 hashmap <resultmaptype = "java.util.hashmap"id = "selfmap"> <resultproperty = "n"column = "city_name"/> ..... </resultmap>입니다.
selfmapper.java :
@Select ( "select A.Id, B.name, C.state from ............")@resultmap (value = "selfmap") 공개 목록 <hashmap> sel (); // 반환 된 목록 컬렉션에 주목하십시오.
완전한 케이스
인터페이스 코드
패키지 com.obtk.dao; java.util.hashmap import; Java.util.list 가져 오기; import org.apache.ibatis.annotations.insert; import org.apache.ibatis.annotations.options; import org.apache.ibatis.annotations.results; import org.apache.ibatis.annotations.results; import org.apache.ibatis.annotations.select; com.obtk.entitys.studentity import; 공개 인터페이스 istudentDao {@Insert ( "학생 (스튜 이름, 성별, 연령, 주소, deptidd)"+ "값 (#{stuname},#{gender},#{age},#{address},#{{deptid})") @options (usegeratedkeys = true, keyproperty = "") stu); @select ( "select * select where stuid =#{stuid}") @Results (// 열 이름과 일치하지 않는 속성 값이 구성되어있는 한, value = {@result (column = "gender")}) Studentitity QueryById (intger stuid); @select ( "select * where where gender =#{qqq} 및 address =#{area}") @Results (// 구성 속성 값 = {@result (column = "gender", property = "sex"}) 목록 <TudlyEntity> QueryByMany (hashmap wemp); // Universal Association 주석 구성 @Select ( "SELECT * FROM SELECT *에서 S.DEPTIDD = D.DEPTID" +"에서 S.Gender =#{sex}" +"및 d.departName =#{deptName}") 목록 <HashMap> QueryByQnn (hashmap thems); } 사례 1 쿼리 쿼리
패키지 com.obtk.test; import org.apache.ibatis.session.sqlsession; import org.apache.ibatis.session.sqlsessionfactory; import com.obtk.dao.istudentdao; com.obtk.entitys.studentity import; import com.obtk.utils.mybatisutil; public class annoselectone {public static void main (String [] args) {sqlsession session = null; sqlsessionFactory factory = null; try {session = mybatisutil.getSession (); Factory = mybatisutil.getFactory (); // 인터페이스의 SQL 구성을 Core Configuration File Factory.getConfiguration (). addMapper (istudentDao.class)와 연결합니다. istudentdao studao = session.getMapper (istudentDao.class); Studententity stu = Studao.QueryByid (129); System.out.println (stu.getStuname ()+","+stu.getSex ()+","+stu.getAddress ()+","+stu.getStuid ()); } catch (예외 e) {e.printstacktrace (); } 마침내 {mybatisutil.closesession (); }}} CASE 2 여러 매개 변수를 전달하고 여러 객체를 쿼리합니다
패키지 com.obtk.test; java.util.hashmap import; Java.util.list 가져 오기; java.util.map import; import org.apache.ibatis.session.sqlsession; import org.apache.ibatis.session.sqlsessionfactory; import com.obtk.dao.istudentdao; com.obtk.entitys.studentity import; import com.obtk.utils.mybatisutil; public class annoselectmany {public static void main (String [] args) {sqlsession session = null; sqlsessionFactory factory = null; try {session = mybatisutil.getSession (); Factory = mybatisutil.getFactory (); // 인터페이스의 SQL 구성을 Core Configuration File Factory.getConfiguration (). addMapper (istudentDao.class)와 연결합니다. istudentdao studao = session.getMapper (istudentDao.class); Hashmap Parammap = New Hashmap (); PARAMMAP.PUT ( "QQQ", "Male"); Parammap.put ( "영역", "학생 기숙사"); 목록 <TudlyEntity> stulist = Studao.QueryBymany (Parammap); for (Studententity stu : stulist) {system.out.println (stu.getStuname ()+","+stu.getSex ()+","+stu.getAddress ()+","+stu.getStuid ()); }} catch (예외 e) {e.printstacktrace (); } 마침내 {mybatisutil.closesession (); }}} 사례 3 객체를 추가합니다
패키지 com.obtk.test; import org.apache.ibatis.session.sqlsession; import org.apache.ibatis.session.sqlsessionfactory; import com.obtk.dao.istudentdao; com.obtk.entitys.studentity import; import com.obtk.utils.mybatisutil; public class annosavetest {public static void main (String [] args) {sqlsession session = null; sqlsessionFactory factory = null; try {session = mybatisutil.getSession (); Factory = mybatisutil.getFactory (); // 인터페이스의 SQL 구성과 Core Configuration file factory.getConfiguration (). addMapper (istudentDao.class); istudentdao studao = session.getMapper (istudentDao.class); Studententity stu = 신규 학생 중단 ( "Testc#", "Male", 21, "Pluto"); stu.setdeptidd (10); int result = studao.saveone (stu); 세션 .commit (); System.out.println ( "성공적으로 저장 :"+stu.getStuid ()); } catch (예외 e) {e.printstacktrace (); } 마침내 {mybatisutil.closesession (); }}}사례 4 연관 쿼리에 해시 맵을 사용하십시오
패키지 com.obtk.test; java.util.hashmap import; Java.util.list 가져 오기; java.util.map import; import org.apache.ibatis.session.sqlsession; import org.apache.ibatis.session.sqlsessionfactory; import com.obtk.dao.istudentdao; com.obtk.entitys.studentity import; import com.obtk.utils.mybatisutil; public class Annojoinqnn {public static void main (String [] args) {sqlsession session = null; sqlsessionFactory factory = null; {// 4를 시도하십시오. GET 세션 세션 = MyBatisutil.getSession (); Factory = mybatisutil.getFactory (); // 인터페이스의 SQL 구성을 Core Configuration File Factory.getConfiguration (). addMapper (istudentDao.class)와 연결합니다. istudentdao studao = session.getMapper (istudentDao.class); Hashmap Parammap = New Hashmap (); Parammap.put ( "섹스", "남성"); Parammap.put ( "DeptName", "Computer System"); // 5. 명령문 목록 <hashmap> stulist = studao.querybyqnn (Parammap); for (hashmap theobj : stulist) {system.out.println (theobj.get ( "stuid")+","+theobj.get ( "gender"))+","+theobj.get ( "stuname")+","+theobj.get ( "dessname"); }} catch (예외 e) {e.printstacktrace (); } 마침내 {mybatisutil.closesession (); }}}위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.