(사용하는 것이다)
라벨의 경우
<if>
테스트 속성 태그 속성 이름은 객체에 기록 된
매핑 설정 파일
<!-- 根据用户名和性别查询 -->
<select id="findUserByUserNameAndSex" parameterType="com.ben.domain.User" resultType="com.ben.domain.User">
select * from user where 1=1
<if test="username != null and username != ''">
and username like '%${username}%'
</if>
<if test="sex != null and sex != ''">
and sex = #{sex}
</if>
</select>
지속성 계층 인터페이스
//根据用户名和性别查询
List<User> findUserByUserNameAndSex(User user);
테스트 파일
//根据用户名和性别查询
@Test
public void testFindUserByUserNameAndSex(){
User user = new User();
user.setUsername("王");
List<User> users = userdao.findUserByUserNameAndSex(user);
for(User u : users) {
System.out.println(u);
}
}
여기서 라벨
위의 조건 1 = 1, 우리가 사용할 수있는 어셈블리를 단순화하기 위해 <where>
개발을 단순화하기 위해 태그를.
효과
- 자동으로 위치를 문 SQL 키워드를 추가
- 첫 번째 조건 및 키워드를 제거
매핑 설정 파일
<select id="findUserByUserNameAndSex" parameterType="com.ben.domain.User" resultType="com.ben.domain.User">
select * from user
<where>
<if test="username != null and username != ''">
and username like '%${username}%'
</if>
<if test="sex != null and sex != ''">
and sex = #{sex}
</if>
</where>
</select>
SQL 문은 동일합니다 :select * from user WHERE username like '%王%'
SQL 조각
SQL을 사용하여, 추출한 SQL을 복제 할 include
궁극적 목적 SQL 재사용을 달성하기 참조.
<!--抽取重复的语句代码片段-->
<sql id="defaultsql">
select * from user
</sql>
<!-- 查询所有-->
<select id="findAll" resultType="com.ben.domain.User">
<include refid="defaultsql"></include>
</select>
<!-- 通过Id查询一个用户 -->
<select id="findUserById" parameterType="Integer" resultType="com.ben.domain.User">
<include refid="defaultsql"></include>
where id = #{v}
</select>
foreach는 태그
<foreach>
태그 세트를 탐색하십시오.
특성 :
수집 : 요소의 모음, 대신에 통과 # 쓰기하지 않도록주의하는 {}
개방 : 명령문의 시작
가까운 : 최종 섹션
항목 : 얻어진 변수 이름의 컬렉션을 통해 각 요소
sperator : 구분
예를 들면 :
select * from user where id in(1,45,46,47,48)
표현을 해당 XML :
<select id="findByIds" parameterType="com.ben.domain.QueryVo" resultType="com.ben.domain.User">
select * from user
<where>
<if test="ids != null and ids.size() > 0">
<foreach collection="ids" open="id in ( " close=")" item="uid" separator=",">
#{uid}
</foreach>
</if>
</where>
</select>
테스트 클래스 작성 :
@Test
public void testFindByIds(){
QueryVo vo = new QueryVo();
List<Integer> ids = new ArrayList<Integer>();
ids.add(1);
ids.add(45);
ids.add(46);
ids.add(47);
ids.add(48);
vo.setIds(ids);
//6.执行操作
List<User> users = userdao.findByIds(vo);
for(User user : users) {
System.out.println(user);
}
}
QueryVo 문구
package com.ben.domain;
import java.io.Serializable;
import java.util.List;
/**
* @ClassName: QueryVo
* @author: benjamin
* @version: 1.0
* @description: 查询条件对象
* @createTime: 2019/07/15/17:35
*/
public class QueryVo implements Serializable {
private User user;
private List<Integer> ids;
public List<Integer> getIds() {
return ids;
}
public void setIds(List<Integer> ids) {
this.ids = ids;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}