yBatis의 getMapper () 인터페이스, resultMap 탭, Alias 별명, 가능한 한 sql 열 추출, 동적 조작
확인: getMapper () 인터페이스 IDept.class는 인터페이스를 정의합니다.
실현되지 않은 방법을 마운트합니다. 특수한 점은 건물을 빌리는 어떤 방법도 작은 설정에서 id 속성과 일치해야 합니다.
프록시를 통해: 인터페이스의 구현 클래스 이름을 생성하고 MyBatis 베이스 유지보수 이름 $Dept_abc,selectDeptByNo()
강한 유형에 해당한다
Eg
첫걸음:재cn.happy.dao에서 인터페이스 정의
package cn.happy.dao;
import java.util.List;
import cn.happy.entity.Dept;
public interface IDeptDao {
// ---------getAllDept id
public List<Dept> getAllDept();
}
2단계: IDept.xml 구성 작은 설정해석:select 안의 Id 속성은 인터페이스 안의 인터페이스 방법 이름과 같다.mapper의namespace 속성 패키지 이름은cn입니다.happy.dao.IDeptDao 커넥터
<?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 namespace="cn.happy.dao.IDeptDao">
<select id="getAllDept" resultType="cn.happy.entity.Dept">
select * from Dept
</select>
</mapper>
3단계: 테스트 클래스해석: 모든 정보를 보는 데는 두 가지 방법이 있다
1)session.selectList("cn.happy.dao.IDeptDao.getAllDept");-------실체류.작은 구성의 Id 이름 ============== 문자열
2)IDeptDao mapper = session.getMapper(IDeptDao.class);구현 클래스에 해당합니다. getMapper는 강한 유형입니다.
// 01 getMapper() id
@Test
public void testSelectAll() {
SqlSession session = factory.openSession();
// ======== . Id ============
/*List<Dept> list = session.selectList("cn.happy.dao.IDeptDao.getAllDept");
for (Dept dept : list) {
System.out.println(dept.getDeptName());
}*/
// getMapper HIbernate ======
//mapper
IDeptDao mapper = session.getMapper(IDeptDao.class);
List<Dept> list = mapper.getAllDept();
for (Dept dept : list) {
System.out.println(dept.getDeptName());
}
4단계: 전체 텍스트 통합
<?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">
<configuration>
<!-- Alias type -->
<typeAliases>
<typeAlias type="cn.resultMap.enetity.Emp" alias="emp"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" />
<property name="username" value="sa" />
<property name="password" value="1" />
</dataSource>
</environment>
</environments>
<!-- : -->
<mappers>
<mapper resource="cn/resultMap/enetity/Emp.xml" />
</mappers>
</configuration>
2. resultMap 태그해석: 사용하는 장면은 실체 클래스의 속성이 데이터베이스와 일치하지 않을 때resultMap 실체 클래스와 데이터베이스의 속성이 일치해야 합니다.(이전에는 솔리드 클래스를 사용했습니다)
Eg 모든 직원 검색 및 소속 부서
첫 번째 단계: 인터페이스 만들기
package cn.resultMap.dao;
import java.util.List;
import cn.resultMap.enetity.Emp;
public interface IEmpDao {
// ,
public List<Emp> getAllEmps();
}
2단계: 작은 설정의 속성 설정해석: 직원의 각도가 많은 측, 한 측에 박힌 각 속성은 association을 사용하십시오. (association을 제거하면 기초적인resultMap)
<?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 namespace="cn.resultMap.dao.IEmpDao">
<resultMap type="cn.resultMap.enetity.Emp" id="empMap">
<id property="empId" column="EMPID"/>
<result property="empName" column="EMPNAME"/>
<result property="empCity" column="EMPCITY"/>
<!-- , association -->
<association property="dept" javaType="cn.resultMap.enetity.Dept">
<result property="deptName" column="DEPTNAME"/>
<result property="deptNo" column="DEPTNO"/>
</association>
</resultMap>
<select id="getAllEmps" resultMap="empMap">
select e.*,d.* from Emp e,Dept d
where e.deptNo=d.deptNo
</select>
</mapper>
3단계: 테스트 클래스
//resultMap: resultMap
// NullException resultMap
@Test
public void testAllEmp(){
SqlSession session=factory.openSession();
IEmpDao mapper = session.getMapper(IEmpDao.class);
List<Emp> allEmps = mapper.getAllEmps();
for (Emp emp : allEmps) {
System.out.println(emp.getEmpName()+"\t "+emp.getDept().getDeptName());
}
session.close();
}
4단계: 큰 구성에 작은 구성 도입3. 추출 sql열
분석: Sql 태그 간소화 코드 양은 작은 설정에서 쓰기
<!-- SQl -->
<sql id="columns">
d.deptNo,d.deptName
</sql>
<!-- SQl -->
<select id="getAllEmps" resultMap="empMap">
select e.*,<include refid="columns"/>from Emp e,Dept d
where e.deptNo=d.deptNo
</select>
넷째, Alias 별칭해석: 큰 설정에 쓰면 작은 설정에서 별명을 인용할 수 있습니다.
<!-- Alias type -->
<typeAliases>
<typeAlias type="cn.resultMap.enetity.Emp" alias="emp"/>
</typeAliases>
5. 동적 조작해석: 동적 SQL 구현을 위한 요소는 다음과 같습니다.
if
choose(when,otherwise)
where
set
Eg 북경 도시 인원 조회1단계: 인터페이스
package cn.resultMap.dao;
import java.util.List;
import cn.resultMap.enetity.Emp;
public interface IEmpDao {
// ,
public List<Emp> getAllEmps();
}
2단계: 짝짓기
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.resultMap.dao.IEmpDao">
<resultMap type="cn.resultMap.enetity.Emp" id="empMap">
<id property="empId" column="EMPID"/>
<result property="empName" column="EMPNAME"/>
<result property="empCity" column="EMPCITY"/>
<!-- , association -->
<association property="dept" javaType="cn.resultMap.enetity.Dept">
<result property="deptName" column="DEPTNAME"/>
<result property="deptNo" column="DEPTNO"/>
</association>
</resultMap>
<select id="getAllEmps" resultMap="empMap">
select e.*,d.* from Emp e,Dept d
where e.deptNo=d.deptNo
</select>
<!-- -->
<select id="testAllEmpBuSelect" parameterType="cn.resultMap.enetity.Emp" resultType="cn.resultMap.enetity.Emp">
select * from Emp
<where>
<if test="empId!=null">
and empId=#{empId}
</if>
<if test="empName!=null">
and empName=#{empName}
</if>
<if test="empCity!=null">
and empCity=#{empCity}
</if>
</where>
</select>
</mapper>
3단계: 테스트
//
@Test
public void testSelect(){
SqlSession session=factory.openSession();
Emp emp=new Emp();
//emp.setEmpName("331");
emp.setEmpCity("sh");
List<Emp> list = session.selectList("cn.resultMap.dao.IEmpDao.testAllEmpBuSelect",emp);
for (Emp emps : list) {
System.out.println(emps.getEmpName());
}
session.close();
}
4단계: 큰 구성에 작은 구성 도입Eg 부서 정보 수정
1단계: 인터페이스
2단계: 작은 구성
<?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 namespace="cn.resultMap.dao.IDeptDao">
<resultMap type="cn.happy.entity.Dept" id="deptResultMap">
<id property="deptNo" column="deptNo"/>
<result property="deptName" column="deptName"/>
</resultMap>
<select id="getAllDept" resultMap="deptResultMap">
select d.*,e.* from Dept d,Emp e
where d.deptNo=e.deptNo and d.deptNo=#{deptNo}
</select>
<!-- -->
<select id="testUpdate" parameterType="int" resultType="cn.resultMap.enetity.Dept">
update dept
<set>
<if test="deptNo!=null">
deptNo=#{deptNo},
</if>
<if test="deptName!=null">
deptName=#{deptName},
</if>
</set>
where deptNo=#{deptNo}
</select>
</mapper>
3단계: 테스트
/**
*
* */
@Test
public void testUpdate(){
SqlSession session=factory.openSession();
Dept dept=new Dept();
dept.setDeptName(" ");
dept.setDeptNo(1);
int count = session.update("cn.resultMap.dao.IDeptDao.testUpdate",dept);
session.commit();
System.out.println(count);
session.close();
}
위에서 말한 것은 마이바티스의 getMapper () 인터페이스,resultMap 라벨,Alias 별명, 가능한 한 sql열을 추출하고 동적 조작을 하는 데 도움이 되었으면 합니다. 궁금한 점이 있으면 저에게 메시지를 남겨 주시면 제때에 답장해 드리겠습니다.여기에서도 저희 사이트에 대한 지지에 감사드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MySQL/마이바티스 | 동적 쿼리 사용A라는 서비스에 해당하는 테이블을 조인하고 조회하는 데 사용됩니다. 나중에 공통화를 위해 B 및 C 서비스도 추가됩니다. A, B, C 서비스는 모두 단일 쿼리에서 작동할 수 있도록 공통화되어야 합니다. 테이블에 각...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.