1. 쿼리
단일 레코드의 쿼리 외에도 여기에서는 레코드 세트를 쿼리하려고합니다.
iusermapper 인터페이스에 다음 방법을 추가하십시오.
목록 <user> getUsers (문자열 이름);
user.xml을 추가하십시오 :
<resultmap type = "user"id = "userList"> <!-유형은 목록 요소를 반환하는 클래스의 전체 이름 또는 별명입니다.> <id councm = "id"속성 = "id" /> <result column = "name"속성 = "name" /> <결과 열 = "age"propert = "age" /> <result column = "address" "address" "selectmap> <select map> <getus" ParameterType = "string"resultMap = "userList"> <!-결과 랩은 위에 정의 된 사용자 목록입니다-> select * from`user`와 같은 이름과 같은 이름 {name} </select>테스트 방법 :
@Test public void queryListTest () {sqlsession session = sqlsessionFactory.Opensession (); {iusermapper mapper = session.getMapper (iusermapper.class); List <user> 사용자 = mapper.getUsers ( "%a%"); // %는 SQL의 모든 문자를 나타냅니다. for (user user : user) {log.info ( "{} : {}", user.getName (), user.getAddress ()); }} 마침내 {session.close (); }} 연결 테이블 쿼리가 반환되면 Compound Object는 연관 키워드로 처리해야합니다.
사용자가 기사를 게시하면 각 사용자는 여러 기사를 게시 할 수 있으며 일대일 관계가 있습니다.
(1) 기사 테이블을 만들고 테스트 데이터를 삽입하십시오.
-`article '이 존재하는 경우 드롭 테이블이있는 경우 테이블을 떨어 뜨립니다. - 'artice'article`article`article '(`int` int not null auto_increment,`user_id` int not null not null,`title` varchar (100) 님이 null,`content'텍스트가 아님, 기본 키 (`id`))라는 테이블을 만듭니다.) 엔진 = innodb auto_increment = 1 기본 charset = utf8; -`article` 값 ( '1', '1', 'title1', 'content1')), ( '2', '1', 'title2', 'content2'), ( '3', '1', 'title3', 'content3'), ( '4', '1', 'title4', 'content4')에`jarts` 값 ( '1', '1', 'title1'))에 삽입 된 여러 테스트 레코드를 추가합니다.
(2) com.john.hbatis.model.article 클래스 :
공개 수업 기사 {private int id; 개인 사용자 사용자; 개인 문자열 제목; 개인 문자열 내용; // getters and setter가 생략}}(3) iusermapper 추가 :
목록 <article> getarticlesbyuserid (int id);
(4) user.xml 추가 :
<resultmap type = "com.john.hbatis.model.article"id = "articlelist"> <id councm = "a_id"property = "id" /> <result column = "title" "property ="title " /<result column ="content "속성 ="content " /> <anspoce" "user"javatype = "user"> <id ustribute maps-<id class "" 속성 = "id" /> <result column = "name"propertion = "name" /> <result column = "address"property = "address ="address " /> < /association> < /resultmap> <select id ="getarticlesbyUserid "parameterType ="int "resultmap ="articlist "> select u.id, u.name, u.address, a.id a_id, a.contle, a. a.user_id = u.id 및 u.id =#{id} </select>에서 내부 가입 사용자 u(5) 테스트 방법 :
@test public void getarticlesbyuseridtest () {sqlsession session = sqlsessionfactory.opensession (); {iusermapper mapper = session.getMapper (iusermapper.class); 목록 <article> articles = mapper.getArticlesByUserId (1); for (기사 기사 : 기사) {log.info ( "{} - {}, author : {}", article.getTitle (), article.getContent (), article.getUser (). getName ()); }} 마침내 {session.close (); }} 첨부된:
협회 태그 내에서 필드 및 속성의 매핑을 정의하는 것 외에도 사용자의 결과 맵을 재사용 할 수도 있습니다.
<Association Property = "user"javatype = "user"resultmap = "UserList" />
2. 추가
iusermapper 인터페이스에 다음 방법을 추가하십시오.
int adduser (사용자);
user.xml 추가 :
<insert id = "adduser"parametertype = "user"usegeneratedkeys = "true"keyproperty = "id"> <!- usegeneratedkeys는 mybatis가 데이터베이스를 사용하여 KeyProperty가 지정된 속성에 자동으로 생성하고 채우는 기본 키를 지정합니다. 지정되지 않으면 반환 객체는 생성 된 값을 얻을 수 없습니다 -> user (이름, 연령, 주소) 값 (#{name},#{age},#{wasse}) </insert>에 삽입 할 수 없습니다.테스트 방법 :
@test public void addUsertest () {user user = new user ( "Lucy", 102, "Happy District"); sqlsession session = sqlsessionfactory.opensession (); {iusermapper mapper = session.getMapper (iusermapper.class); int inffectedCount = mapper.adduser (사용자); 세션 .commit (); // 기본값은 자동으로 제출되지 않습니다. call session.getConnection (). getAutoCommit ()로 log.info를 볼 수 있습니다 ( "{} 새 레코드는 ID : {}", inffectedCount, user.getId ())를 성공적으로 삽입했습니다. } 마침내 {session.close (); }}3. 업데이트
인터페이스 추가 방법 :
int updateUser (사용자 사용자);
user.xml 추가 :
<업데이트 id = "updateUser"ParameterType = "User"> 업데이트`사용자 설정 이름 =#{name}, age =#{age}, address =#{jand테스트 방법 :
@test public void updateUserTest () {sqlsession session = sqlsessionFactory.Opensession (); {iusermapper mapper = session.getMapper (iusermapper.class); 사용자 user = mapper.getuserByid (8); user.setAddress ( "만족도"); int inffectedCount = mapper.updateUser (사용자); // 수정할 속성 외에도 사용자의 다른 속성을 할당해야합니다. 그렇지 않으면 이러한 속성은 데이터베이스에서 초기 값 (NULL 또는 0 등)으로 업데이트됩니다. 먼저 쿼리 할 수 있지만 데이터베이스와의 불필요한 상호 작용이 증가합니다. 다음 조건은이 문제를 피할 수 있습니다. log.info ( "영향을받는 count : {}", 영향을받는 count); 세션 .commit (); } 마침내 {session.close (); }}4. 삭제
인터페이스 추가 방법 :
int deleteuser (int id);
user.xml 추가 :
<delete id = "deleteuser"parametertype = "int">`user '에서 삭제 된 id =#{id} </delete>테스트 방법 :
@test public void deleteusertest () {sqlsession session = sqlsessionfactory.opensession (); {iusermapper mapper = session.getMapper (iusermapper.class); int inffectedCount = mapper.deleteuser (8); log.info ( "영향을받는 count : {}", 영향을받는 count); 세션 .commit (); } 마침내 {session.close (); }}