Mybatis 동적 sql 문장 주해 의 간단 한 실례

5947 단어 mybatis
인터페이스 클래스 만 들 기:
package com.pk.sql;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.InsertProvider;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.SelectProvider;
import org.apache.ibatis.annotations.UpdateProvider;
import org.apache.ibatis.jdbc.SQL;

public interface EmpMapper {
	
	/*	     sql
	 * 				   :   
	 * 
	 * @Select(""
			+ 	"select * from emp\r
" + " <where>\r
" + " <if test=\"ename!=null\">\r
" + " and ename LIKE #{ename}\r
" + " </if>\r
" + " <!-- int 0 -->\r
" + " <!-- -->\r
" + " <if test=\"sal==0 and ename==null\">\r
" + " and sal = #{sal}\r
" + " </if>\r
" + " </where>" + "
")*/ @SelectProvider(type=EmpProvider.class,method="getSql1") public List queryEmp(@Param("emps") Emp emp); public List queryEmp1(Emp emp); public List queryEmp2(Emp emp); @SelectProvider(type=EmpProvider.class,method="update") public void updateEmp(@Param("emps") Emp emp); public List queryEmp3(Emp emp); @InsertProvider(type=EmpProvider.class,method="add") public void addEmp(@Param("add") Emp emp); static class EmpProvider { public String add(Map map) { Emp emp = map.get("add"); SQL sql = new SQL(); sql.INSERT_INTO("emp"); if(emp.getEname()!=null) { sql.VALUES("ename", "#{add.ename}"); } if(emp.getSal()!=0) { sql.VALUES("sal", "#{add.sal}"); } return sql.toString(); } public String update(Map map) { Emp emp = map.get("emps"); SQL sql = new SQL(); sql.UPDATE("emp"); if(emp.getEname()!=null) { sql.SET("ename=#{emps.ename}"); } if(emp.getSal()!=0) { sql.SET("sal = #{emps.sal}"); } sql.WHERE("empno = #{emps.empno}"); return sql.toString(); } public String getSql1(Map map) { Emp emp = map.get("emps"); SQL sql = new SQL(); sql.SELECT("*"); sql.FROM("emp"); if(emp.getSal()!=0) { sql.AND(); sql.WHERE(" sal = #{emps.sal}"); } if(emp.getEname()!=null) { sql.AND(); sql.WHERE(" ename like #{emps.ename}"); } return sql.toString(); } /** * : * @param map * @return */ public String getSql(Map map) { Emp emp = map.get("emps"); String sql = "select * from emp where 1=1"; if(emp.getEname()!=null) { sql += " and ename like #{emps.ename}"; } if(emp.getSal()!=0) { sql += " and sal = #{emps.sal}"; } return sql; } } }

실체 클래스:
package com.pk.sql;

import java.util.List;

public class Emp {
	private int empno;
	private String ename;
	private String job;
	private int sal;
	private List deptNoList;
	
	
	
	
	public List getDeptNoList() {
		return deptNoList;
	}
	public void setDeptNoList(List deptNoList) {
		this.deptNoList = deptNoList;
	}
	
	
	public int getSal() {
		return sal;
	}
	public void setSal(int sal) {
		this.sal = sal;
	}
	public String getJob() {
		return job;
	}
	public void setJob(String job) {
		this.job = job;
	}
	public int getEmpno() {
		return empno;
	}
	public void setEmpno(int empno) {
		this.empno = empno;
	}
	public String getEname() {
		return ename;
	}
	public void setEname(String ename) {
		this.ename = ename;
	}
	@Override
	public String toString() {
		return "Emp [empno=" + empno + ", ename=" + ename + ", job=" + job + ", sal=" + sal + "]";
	}
}

테스트 클래스 만 들 기:
package com.pk.sql;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

/**
 * mybatis     :1.    sql        (      ) 2.          (      )
 *         xml  (     MAPPING)  :emp  emp.xml dept  dept.xml
 * 
 * @author 
 *
 *         2018 11 10   9:06:27
 */
public class TestMybatis {
	//   SqlSession  
	public static SqlSession getSession() {
		String resource = "config.xml";
		InputStream resourceAsStream = TestMybatis.class.getResourceAsStream(resource);
		// session         
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
		//               
		SqlSession openSession = sqlSessionFactory.openSession();
		return openSession;
	}
	
	
	@Test
	public void test() {
		SqlSession session = getSession();
		Emp emps = new Emp();
		emps.setSal(4000);
		emps.setEname("% %");
		EmpMapper mapper = session.getMapper(EmpMapper.class);
		
		List queryEmp = mapper.queryEmp(emps);
		System.out.println(queryEmp);
	}
	
	@Test
	public void test3() {
		
		SqlSession session = getSession();
		Emp emp = new Emp();
		emp.setSal(3000);
		emp.setEname("  ");
		emp.setEmpno(10019);
		
		EmpMapper mapper = session.getMapper(EmpMapper.class);
		mapper.updateEmp(emp);
		session.commit();
		session.close();
	}
	
	@Test
	public void test5() {
		
		SqlSession session = getSession();	
		EmpMapper mapper = session.getMapper(EmpMapper.class);
		Emp emp = new Emp();
		emp.setEname("  ");
		emp.setSal(5000);
		mapper.addEmp(emp);
		session.commit();
		session.close();
		
	}


}


메모: config. xml 파일 에 인터페이스 클래스 의 맵 경 로 를 맞 춰 야 합 니 다: (패키지 이름. 클래스 이름) my batis 패키지 다운로드:https://mvnrepository.com/artifact/org.mybatis/mybatis

좋은 웹페이지 즐겨찾기