MyBatis는 일반 SQL 쿼리, 저장 프로 시저 및 고급 매핑을 지원하는 지속성 계층 프레임 워크입니다.
MyBatis는 거의 모든 JDBC 코드의 수동 설정과 매개 변수 및 결과 세트의 검색 캡슐화를 제거합니다.
MyBatis는 구성 및 원래 매핑, 맵핑 인터페이스 및 Java의 Pojo (일반 구식 Java 개체)에 데이터베이스의 레코드로 간단한 XML 또는 주석을 사용할 수 있습니다.
각 mybatis 응용 프로그램은 SQLSESSIONFACTORY 객체의 인스턴스를 코어로 사용합니다.
sqlsessionFactory 객체의 인스턴스는 sqlsessionfactorybuilder 객체를 통해 얻을 수 있습니다. SQLSESSIONFACTORYBUILDER 객체는 XML 구성 파일 또는 이전 사용 관리에서 준비한 구성 클래스 인스턴스를 통해 구축 할 수 있습니다.
DataSource DataSource = blogdatasourcefactory.getBlogdatasource (); TransactionFactory TransactionFactory = New JDBCTransactionActionFactory (); // 환경 환경 = 새로운 환경 ( "개발", 트랜잭션 기능, DataSource); 구성 구성 = 새로운 구성 (환경); // Mapper Class. configuration.addmapper (blogmapper.class); sqlsessionFactory sqlsessionFactory = new SqlSessionCeptoryBuilder (). 빌드 (configuration);
이 경우 구성은 Mapper 클래스를 추가하는 것입니다. Mapper 클래스는 XML 파일의 종속성을 피하기 위해 SQL 매핑 명령문의 주석이 포함 된 Java 클래스이지만 대부분의 고급 매핑 (예 : 중첩 조인 매핑)에서는 XML 매핑이 여전히 필요합니다.
이러한 이유로 XML 구성 파일이 존재하는 경우 MyBatis는 피어 XML 파일을 자동으로 찾아로드하고로드합니다 (이 경우 클래스 경로에서 BlogMapper.class 클래스의 클래스 이름을 기준으로 BlogMapper.xml은 동일한 파일 디렉토리에있는로드됩니다.
<? 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"> <mapper namepace ="konc.web.web.wb.wb.weusermapper. 모델 속성 이름은 데이터 테이블의 열 이름과 일치하지 않는다는 것은 jdbctype가 대문자를 대문자로 삼아야한다-> <resultmap type = "user"id = "usermap"> <id property = "id"column = "id"javatype = "int"jdbctype = "integer"/> <result propertion = "namecil ="javatype = "strip. jdbctype = "varchar"/> <result property = "age"column = "age"javatype = "int"jdbctype = "integer"/> </resultmap> <!- 결과를 참고하십시오. column == property 인 경우 Java 객체를 직접 반환 할 수 있습니다. 속성 이름이 열 이름과 일치하지 않는 경우 솔루션은 다음과 같습니다. 1. resultMap 사용; 2. 리턴 해시 맵; 3. 쿼리 문에 별명을 사용합니다-> <select id = "getUser"parametertype = "int"resultmap = "usermap"> select * where id =#{id} </select> <delete id = "deleteuser"parametertype = "int"> t_user에서 delete </delete> <#id} < "id}" ParameterType = "User"> 업데이트 t_user set username =#{name}, age =#{age} where id =#{id} </update> <insertuser "parametertype ="user "> t_user (username, age) 값 (#{name},#{age}) <! <!) 열 (사용자 이름)이므로 결과는 usermap을 사용합니다 -> <select id = "getUsers"resultmap = "usermap"> select * from t_user </select> </mapper> mybatis.xml에 등록 [스프링과 결합하면이 구성 파일이 필요하지 않습니다.]
mybatis 구성 파일
<? xml version = "1.0"encoding = "utf-8"?> <! doctype configuration public "-// mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configeration> <jdbc.proper " <!-엔티티 클래스 별칭 구성-> <tondealiases> <!-<faintealias type = "com.web.model.user"alias = "user"/>-> <packue name = "com.web.model"/> </intevaliases> <!-개발 모드 : 작업 모드-> <Environments = "Development"> <jd id = ""<jd "> /> <dataSource type = "pooled"> <속성 이름 = "driver"value = "$ {driver}" /> <속성 이름 = "url"value = "$ {url}" /> <property name = "username"value = "$ {username}" /> <property name = "password"vale = "$ {password}" /> <mapper resource = "com/web/mapper/usermapper.xml"/> <mapper resource = "com/web/mapper/ordermapper.xml"/> <mapper/</mappers> </configuration>여기서 XML 파일을 사용하여 sqlsessionfactory 및 sqlsession을 얻습니다.
public static sqlsessionfactory getFactory () {/*src dir*/string resource = "mybatis.xml";/*mybatisutils.class.getResourceasStream (Resource) ---- 잘못되었습니다 !!! * 두 개의 위아래로 구별하십시오 * */inputStream inputStream = myBatisutils.class.getClassLoader (). getResourceAsStream (resource); sqlsessionFactory factory = new SqlSessionFactoryBuilder (). 빌드 (inputStream); retucy factory internation; 제출;/* 두 가지 해결책 : 1. factory.opensession (true); 2.session.commit (); */ /*SQL XML 사용*/@test public void testAdd () {sqlsession session = mybatisutils.getFactory (). eleStession (); string statement = "com.web.mapper.usermapper.insertuser";/*Effect Rows*/int insert = session (tom5 ", 15), 15", 15 ") commit*/session.commit (true); session.close (); System.out.println ( "Effect Rows .."+Insert);}@test public void testselect () {/*자동 커밋을 설정합니다. "com.web.mapper.usermapper.getUser";/*효과 행*/user user = session.selectone (state, 3); System.out.println ( "Effect Rows .."+User);}@test public void testupdate () {sqlsession session = mybatisutils.getFactory (); Opensation (true); Opensation = retring public void testupdate (); "com.web.mapper.usermapper.updateuser";/*효과 행*/int update = session.update (명령문, 새 사용자 (3, "tom4", 13)); System.out.println ( "Effect Rows .."+update);}@test public void testdelete () {sqlsessionsestion (). "com.web.mapper.usermapper.deleteuser";/*효과 행*/int delete = session.delete (state, 6);/*자신이 커밋*/session.commit (); system.out.println ( "+delete); session.close ()}@) {sqls void testgetuss = myBatisutils.getFactory (). openSession (); String statement = "com.web.mapper.usermapper.getUsers";/*목록을 반환합니다.ParameterType 및 resultType는 해시 맵입니다.
<select id = "getUserFormap"ParameterType = "hashmap"resulttype = "hashmap"> select *에서 c_user에서 id =#{id}; </선택> @test public void getUserformap () {sqlsession session = mybatisutils.getFactory (). elepenSession (); String Statement = "com.web.mapper.usermapper.getuserformap"; Hashmap <String, 객체> Map = new Hashmap <String, Object> (); Map.put ( "Id"; session.selectone (문,지도);/*기본값은 자동 커밋*/session.commit (true); session.close (); System.out.println ( "Effect Rows .."+selectone+", 클래스 :"+selectone.getClass ());} 효과 행 .. {id = 1, age = 12, name = luli}, 클래스 : class java.util.hashmap요약하면, mybatis는 매개 변수 유형 및 결과 유형에 따라 자동으로 구문 분석하고 캡슐화한다는 것을 알 수 있습니다.
< "getListPage"ParameterType = "hashmap"resultmap = "siteExtendDaomap"> select id, site_id, site_name, site_number, province, city, area, address, internal_number, longitude, tb_site -use dynamic sql <trim prefix =. test = "checkstate! = null 및 checkstate! = ''"> and check_state = #{checkstate, jdbctype = integer} </if> <if test = "siteId! = null 및 siteId! = ''"> 및 site_id는 concat ( '%', #{siteId}, '%') </if> <if test = "sitename! siteName! = '' "> 및 site_name은 concat ( '%', #{siteName}, '%') </if> <test ="siteNumber! = null and siteNumber! = '' ""> 및 site_number와 같은 site_number ( '%', #{sitenumber}, '%') </if> if test! concat ( '%', #{siteNumber}, '%') </if> <if test = "province! = null and province! = ''"> and province = #{province} </if> < "city! = null and city! = '' '"> 및 city = #{city} </if> <면적! </if> </trim>-add sort <if test = "sortname! = null and sortname! = ''및 sortorder! = null and sortorder! = null and sortorder! = ''" "> 주문 {sortname} $ {sortorder} </if>-add paging limit $ {(page-1)*pages}매개 변수가 pojo 인 경우 MyBatis는 객체에서 자동으로 ID를 얻습니다.
<delete id = "delete"parametertype = "user"> tb_user에서 삭제 된 id = #{id} </delete> <delete id = "deletebyid"parametertype = "long"> tb_user에서 delete id = #{id} </delete><delete id = "deletebyIds"> id in ind in inseach <foreach collection = "list"item = "id"al
일반적으로 GetListPage와 함께 사용됩니다.
< "getRows"parameterType = "HashMap"resultType = "long"> tb_sys_role에서 count (*)를 선택하십시오. tb_sys_role <if test = "keysysrole! = null"> <trim prefix = "여기서"prefixoverrides = "및 | 또는"> if test = "keysysysrole.id! </if> <if test = "keysysrole.name! = null 및 keysysysrole.name! = ''"> 및 name = #{keysyssrole.name} </if> <if test = "keysysrole.available! = null and keysysrole.available! = ''"> 및 keyssrole. </if> </select>위는 코드 분석을 위해 XML을 사용하는 MyBatis에 대한이 기사의 모든 내용입니다. 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구는이 사이트의 다른 관련 주제를 계속 참조 할 수 있습니다. 단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!