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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Mybatis가 키 id를 삽입하는 방법을 되돌려줍니다.mapper의 xml 파일에useGeneratedKeys 구성 KeyProperty를 사용하여 Id로 돌아가면 됩니다. PS: Mybatis의 insert에서 키 ID를 반환하는 방법 1、XyzMapper.xml 또...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.