이전 ArticleMyBatis 소개 학습 튜토리얼 (I) - MyBatis Quick Start에서는 MyBatis를 사용하여 사용자 테이블의 데이터를 쿼리하는 방법에 대해 이야기했습니다. 이는 MyBatis에 대한 예비 소개입니다. 오늘 우리는 MyBatis를 사용하여 사용자 테이블에서 CRUD 작업을 수행하는 방법을 설명합니다. 주제로 가기 전에 Mybatis와 Crud에 대한 기본 지식을 추가하겠습니다.
mybatis는 무엇입니까?
MyBatis는 일반 SQL 쿼리, 저장 프로 시저 및 고급 매핑을 지원하는 우수한 지속성 계층 프레임 워크입니다. MyBatis는 거의 모든 JDBC 코드 및 매개 변수의 수동 설정을 제거하고 결과 세트를 검색합니다. MyBatis는 단순한 XML 또는 주석을 사용하여 구성 및 원래 매핑을 위해 인터페이스를 맵핑하고 Java의 Pojos (일반 Old Java Objects)를 데이터베이스의 레코드로 사용할 수 있습니다.
mybatis 다운로드 : https://github.com/mybatis/mybatis-3/releases
crud는 의미합니다
CRUD는 계산 처리를 수행 할 때 여러 단어의 첫 글자의 약어를 말합니다. 주로 소프트웨어 시스템에서 데이터베이스 또는 지속성 계층의 기본 운영 기능을 설명하는 데 사용됩니다.
요점으로 이동 하여이 기사에 사용 된 테스트 환경은 이전 기사의 테스트 환경입니다.
1. mybatis를 사용하여 테이블에서 CRUD 작업을 수행합니다 - XML 기반 구현
1. SQL 매핑 XML 파일을 정의합니다
usermapper.xml 파일의 내용은 다음과 같습니다.
<? xml 버전 = "." 인코딩 = "utf-"?> <! doctype mapper public "-// mybatis.org//dtd mapper .//en" "http://mybatis.org/dtd/mybatis-mapper.dtd"><! 네임 스페이스의 값은 일반적으로 패키지 이름 + SQL 맵 파일 이름으로 설정되므로 네임 스페이스의 값이 고유 한 것으로 보장 될 수 있습니다. 예를 들어, 네임 스페이스 = "me.gacl.mapping.usermapper"는 me.gacl.mapping (패키지 이름) + usermpper (usermapper.xml 파일 제거 접미사)-> <mapper 네임 스페이스 = "me.gacl.mapping.usermapper"> <! <!-query select to the getuser, getuser, the getuser, the id a query stiptrest a query sql 문을 작성하십시오. 쿼리에 사용 된 매개 변수 유형을 표시하기 위해 ParameterType 속성을 재사용 할 수 없습니다. resulttype 속성은 query resulttype = "me.gacl.domain.user"에 의해 반환 된 결과 세트 유형을 나타냅니다. 사용자 클래스의 객체를 사용자 클래스의 객체로 캡슐화하는 것을 의미합니다. 사용자 클래스로 반환하는 사용자 클래스-> <!-<getUser "getUser" "int" resulttype = "me.gacl.domain.user"> select * select * select * id =#{id} </select> <!-사용자 만들기 (create)-> <insert id = "adduser"parametertype = "me.gacl.domain.user"> user in user in user (name, age) 값 (#{name},#{elete}) <! -> <delete id = "deleteUser"parametertype = "int"> 사용자에서 삭제 된 경우 id =#{id} </delete> <!-사용자를 수정합니다 (update)-> <update id = "updateUser"parameterType = "me.gacl.domain.user"> update set name = {name}, en 모든 사용자 쿼리-> <select id = "getAllUsers"resulttype = "me.gacl.domain.user"> select * from user </select> </mapper> 단위 테스트 클래스 코드는 다음과 같습니다.
packing me.gacl.test; import java.util.list; import me.gacl.domain.user; import me.gacl.util.mybatisutil; import org.apache.ibatis.session.session.sqlsession; import org.junit.test; public class testcrudbyxmlaper {@testpublic void void testAd (@testppppplic void void void void void testor sqlsession = mybatisutil.getsqlsession (false); sqlsession sqlsession = mybatisutil.getSqlsession (true);/*** MAP SQL 식별 문자열,* me.gacl.mapping.usermapper는 usermapper.xml 파일에서 맵퍼 태그의 이름 공간 속성의 값입니다. 삽입 태그의 ID 속성 값을 통해*/string statement = "me.gacl.mapping.usermapper.adduser"; // 맵 SQL 식별 문자열 user = new user (); user.setname ( "user lonely and canglang"); user.setage (); insert retresult =를 수행 할 수 있습니다. SQLSESSION.INSERT (State, User); // 수동으로 트랜잭션을 제출 // sqlsession.commit (); // sqlsession을 사용하여 sql을 실행 한 후 sqlsessionsqlsession.close ()를 닫아야합니다. system.out.println (retresult);}@testpublic void testupdate () {sqlsession sqlsession = mybatisutil.getSqlsession (true);/*** map sql 식별 문자열,* me.gacl.mapping.usermporpper는 Nampper Attribute in theermporp.xmll, theermporp.xmll, resmpper의 값입니다. 업데이트 태그의 값. 실행될 SQL은 업데이트 태그의 ID 속성 값을 통해 찾을 수 있습니다. */string 문 = "me.gacl.mapping.usermapper.upDateUser"; // sql id string user = new user (); user.setid (); user.setname ( "lonely canglang"); user.setage (); // sql on, user, sql on, user); close sqlsession.close (); system.out.println (retresult);}@}@testpublic void testdelete () {sqlsession sqlsession = mybatisutil.getsqlsession (true);/*** Map Sql Identification,* me.gacl.mapping.usermapper는 맵퍼 타기의 가치가 값의 값입니다. usermapper.xml 파일, * deleteuser는 삭제 태그의 ID 속성 값입니다. 실행되는 SQL은 삭제 태그*/String 문의 ID 속성 값을 통해 찾을 수 있습니다./String 문 = "me.gacl.mapping.usermapper.deleteuser"; // MAP SQL 식별 문자열 // 삭제 삭제 int retresult = SQLSESSIO sqlsessionsqlsession.close (); system.out.println (retresult);}@testpublic void testgetall () {sqlsession sqlsession = mybatisutil.getSqlsession ();/*** MAP Sql.mapping.usermapper는 맵퍼 태그의 가치입니다. usermapper.xml 파일, * getAllUsers는 선택 태그의 ID 속성 값입니다. 선택 태그의 ID 속성 값을 통해 실행될 SQL을 실행할*/string 문을 실행할 수 있습니다. sqlsession sql을 실행하려면 sqlsessionsqlsession.close ()를 닫아야합니다. System.out.println (lstusers);}} 2. mybatis를 사용하여 테이블에서 CRUD 작업을 수행합니다 - 주석 기반 구현
1. SQL 매핑의 인터페이스를 정의합니다
usermapperi 인터페이스의 코드는 다음과 같습니다.
me.gacl.mapping; import java.util.list; import me.gacl.domain.user; import org.apache.ibatis.annotations.delete; import org.apache.ibatis.annotations.insert; import org.apache.ibatis.annotations.select; import org.apache.ibatis.annotation.annot.annotation GACL* SQL 매핑의 인터페이스를 정의하고 주석*/public interface usermporpi {// @insert annotation을 사용하여 add @insert ( "이름, Age) 값 ( #{name}, age})에 의해 실행되는 SQL을 표시하기 위해 @insert anotation을 사용하여 실행될 SQL을 지정하십시오. deletebyid method@delete에 의해 실행될 SQL을 지정하십시오 ( "id =#{id}") public int deletebyid (int id); // @update annotation을 사용하여 업데이트 메소드를 지정하려면 @update anotation@update ( "Update set name =#{name}, Age =#{id})에 의해 실행되도록 SQL을 지정하십시오. 사용자); // @Select 주석을 사용하여 getByid 메소드 @select *에서 실행할 SQL을 지정하여 id =#{id} ") 공개 사용자 getByid (int id); // @Select 주석을 사용하여 sql을 사용하여 getAll @elect <user getall> getall ();}; usermapperi 인터페이스에 대한 특정 구현 클래스 코드를 작성할 필요는 없습니다. 이 특정 구현 클래스는 Mybatis에 의해 동적으로 구성되며 직접 사용하면됩니다.
2. Conf.xml 파일 에이 매핑 인터페이스를 등록하십시오
<? xml 버전 = "." 인코딩 = "utf-"?> <! doctype configuration public "-// mybatis.org//dtd config .//en" "http://mybatis.org/dtd/mybatis-config.dtd"> <configuration> <envonternments developt"> <anniverning id = "transatompanmanger type"> /> <!-데이터베이스 연결 정보 구성-> <dataSource type = "pooled"> <property name = "driver"value = "com.mysql.jdbc.jdbc.jdbc.jdbc.jdbc.jdbc.jdbc.jdbc.jdbc.driver" /> <property name = "url"value = "jdbc : mysql : // localhost : /mybatis"/> value = "xdp"/> </datasource> </환경> </환경> <mappers> <!- usermapper.xml 파일을 등록하십시오. usermapper.xml은 패키지 Me.gacl.mapping에 위치하고 있으므로 리소스는 ME/GACL/MAPPAPG/USERMPARPE.XML-> <Mapper Resource = "ME/GACL/MAPPING/USERMPARPE.XML"/> <!-레지스터 usermapper 매핑 인터페이스-> <Mapper> </configuration>로 작성되었습니다.
단위 테스트 클래스의 코드는 다음과 같습니다.
packing me.gacl.test; import java.util.list; import me.gacl.domain.user; import me.gacl.mapping.usermapperi; import me.gacl.util.mybatisutil; import org.apache.ibatis.sqlsession.sqlsession.sqlsestions.sqlsection. testAdd () {sqlsession sqlsession = mybatisutil.getSqlsession (true); // usermapperi 인터페이스의 구현 클래스 개체를 가져옵니다. usermapperi 인터페이스의 구현 클래스 객체는 sqlsession.getmapper (usermpapperi.class)에 의해 동적으로 구성됩니다. usermapperi mapper = sqlsession.getmapper (usermpaperi.class); user user = new user (); user.setname ( "userxdp"); user.setage (); int add = mapper.add (user); // sql을 실행 한 후 sqlsessionsqlsessions (close)가 필요합니다. System.out.println (add);}@testpublic void testupdate () {sqlsession sqlsession = mybatisutil.getSqlsession (true); // usermapperi 인터페이스의 구현 클래스 개체를 가져옵니다. usermapperi 인터페이스의 구현 클래스 객체는 sqlsession.getmapper (usermpapperi.class) usermapperi mapper = sqlsession.getmapper (usermpapperi.class)에 의해 동적으로 구성됩니다. user user = new user (); user.setid (); user.setname ( "long lang_xdp"); user.setage (); // 수정 작업 실행 int retresult = mapper.update (user); // sqlsession을 사용한 후 sqlsessionsqlsessions.close ()@system.out)@retresult. testDelete () {sqlsession sqlsession = mybatisutil.getSqlsession (true); // usermapperi 인터페이스의 구현 클래스 개체를 가져옵니다. usermapperi 인터페이스의 구현 클래스 객체는 sqlsession.getmapper (usermapperi.class) usermapperi mapper = sqlsession.getmapper (usermapperi.class)에 의해 동적으로 구성됩니다. sqlsessionsqlsession.close (); System.out.println (retresult);}@testpublic void testgetuser () {sqlsession sqlsession = mybatisutil.getSqlsession (); // usermPaperi 인터페이스의 구현 클래스 개체를 가져옵니다. usermapperi 인터페이스의 구현 클래스 객체는 sqlsession.getmapper (usermapperi.class) usermapperi mapper = sqlsession.getmapper (usermapperi.class)에 의해 동적으로 구성됩니다. sqlsessionsqlsession.close (); system.out.println (user);}@testpublic void testgetall () {sqlsession sqlsession = mybatisutil.getSqlsession (); // usermapperi 인터페이스의 구현 클래스 개체를 가져옵니다. usermapperi 인터페이스의 구현 클래스 객체는 sqlsession.getmapper (usermpapperi.class) usermapperi mapper = sqlsession.getmapper (usermapperi.class)에 의해 동적으로 구성됩니다. sqlsession, sqlsessionsqlsession.close ()를 닫아야합니다. System.out.println (lstusers);}} 사용 된 MyBatisutil 도구 클래스 코드는 다음과 같습니다.
packing me.gacl.util; import java.io.inputStream; import org.apache.ibatis.session.sqlsession; import org.apache.ibatis.session.sqlsessionfactory; import org.apache.ibatis.session.sqlsession actactory; import org.apache.ibatis.sqlsection org.apache mybatisutil {/*** get sqlsessionfactory*@return sqlsessionfactory*/public static sqlsessionfactory getSqlsessionFactory () {String resource = "conf.xml"; inputStream is = mybatisutil.class.class.getclassstream (getResourceasStream); sqlsection factorications = newsourceasstream. sqlsessionfactoryBuilder () 빌드 (is); return factory;}/*** sqlsession get sqlsession* @return sqlsession*/public static sqlsession getSqlsession () {return getSqlSessionFactory (). oosensession ();}/*** sqlsession get sqlsession* isaUtocommit* isqlsestion rest hat the sqlsection은 SQL이 실행 된 후 트랜잭션* false는 생성 된 SQLSESSION 객체가 SQL이 실행 된 후에 트랜잭션을 자동으로 커밋하지 않음을 나타냅니다. 이 시점에서 트랜잭션을 제출하려면 sqlsession.commit ()를 수동으로 호출해야합니다* @return sqlsession*/public static sqlsession getSqlsession (boolean isautocommit) {return getSqlsessionFactory (). opensession (isaUtocommit);}}위의 모든 관련 코드는 테스트되었으며 모든 사람이 자신감을 가지고 사용할 수 있습니다!
위의 것은 편집자 (ii)가 소개 한 Mybatis 학습 자습서입니다. MyBatis를 사용하여 사용자 테이블에서 CRUD 작업을 수행하는 방법입니다. 모든 사람에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 모든 사람에게 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!