1.if语句
如果empno不为空,则在WHERE参数后加上AND empno = #{empno},这里有1=1所以即使empno为null,WHERE后面也不会报错。
映射文件
EmpMapper接口
public Emp getEmpById2(@Param("empno")Integer empno) throws IOException;
有时候我们并不想应用所有的条件,而只是想从多个选项中选择一个。而使用if标签时,只要test中的表达式为 true,就会执行 if 标签中的条件。MyBatis 提供了 choose 元素。if标签是与(and)的关系,而 choose 是或(or)的关系。
2.where语句和Choose(when,otherwise)
1.Where后面empno和ename为null,那where就不会出现在sql语句中。
- choose标签是按顺序判断其内部when标签中的test条件出否成立,如果有一个成立,则 choose 结束。当 choose 中所有 when 的条件都不满则时,则执行 otherwise 中的sql。类似于Java 的 switch 语句,choose 为 switch,when 为 case,otherwise 则为 default。
映射文件
EmpMapper接口
public Emp getEmpById3(Emp emp) throws IOException;
3.set语句
set主要也是用来解决更新问题的。
映射文件UPDATE emp ename=#{ename}, job=#{job}, empno=#{empno};
EmpMapper接口
public Integer updateEmprById2(Emp emp) throws IOException;
4.trim
trim标记是一个格式化的标记,可以完成set或者是where标记的功能。
相关属性: Prefix:前缀。 prefixOverrides:去掉第一个指定内容。 suffix:后缀。 suffixoverride:去掉最后一个指定内容。 映射文件映射文件
update emp ename = #{ename}, job = #{job} and empno = #{empno}
EmpMapper接口
public Emp getEmpById4(Emp emp) throws IOException; public Integer updateEmprById3(Emp emp) throws IOException;
5.foreach语句
foreach用来遍历,遍历的对象可以是数组,也可以是集合。
相关属性: Collection:collection属性的值有三个分别是list、array、map三种。 Open:前缀。 Close:后缀。 Separator:分隔符,表示迭代时每个元素之间以什么分隔。 Item:表示在迭代过程中每一个元素的别名。 Index:用一个变量名表示当前循环的索引位置。 映射文件insert into emp(ename,job)values (#{emp.ename},#{emp.job})
EmpMapper接口
public int addEmp6(@Param("emps")Listemps);
6.SQL块
映射文件
empno,ename,job
EmpMapper接口
public ListselEmp1() throws IOException;
7.bind
映射文件
EmpMapper接口
public Emp getEmpById6()throws IOException;
全部代码:
EmpMapper接口
package com.zsl.dao;import java.io.IOException;import java.util.List;import org.apache.ibatis.annotations.Param;import com.zsl.pojo.Emp;public interface EmpMapper { public Integer addEmp(Emp emp) throws IOException; public Integer deleteEmpById(Integer empno) throws IOException; public Integer updateEmprById(Emp emp) throws IOException; public Emp getEmpById(@Param("empno")Integer empno) throws IOException; public Integer addEmp1(String ename,String job) throws IOException; public Integer addEmp2(String ename,String job) throws IOException; public Integer addEmp3(@Param("ename")String ename,@Param("job")String job) throws IOException; public Integer addEmp4(@Param("ename")String ename,@Param("job")String job) throws IOException; public ListselEmp() throws IOException; public Emp getEmpById2(@Param("empno")Integer empno) throws IOException; public Emp getEmpById3(Emp emp) throws IOException; public Integer updateEmprById2(Emp emp) throws IOException; public Emp getEmpById4(Emp emp) throws IOException; public Integer updateEmprById3(Emp emp) throws IOException; // 如果不指定@Param 默认是array public List getEmpById5(@Param("empnos")List empno); public int addEmp6(@Param("emps")List emps); public List selEmp1() throws IOException; public Emp getEmpById6()throws IOException;}
EmpMapper.XML映射文件
delete from emp where empno=#{empno} update emp set name = #{ename} where empno=#{empno} insert into emp(ename,job)values(#{arg0},#{arg1}) insert into emp(ename,job)values(#{param1},#{param2}) insert into emp(ename,job)values(${ename},${job}) insert into emp(ename,job)values(#{ename},#{job}) insert into emp(ename,job)values(#{ename},#{job}) select LAST_INSERT_ID() insert into emp(ename,job)values(#{ename},#{job})UPDATE emp ename=#{ename}, job=#{job}, empno=#{empno}; update emp ename = #{ename}, job = #{job} and empno = #{empno} insert into emp(ename,job)values (#{emp.ename},#{emp.job}) empno,ename,job
全局配置文件
mybatis-cfg.xmlPojo
package com.zsl.pojo;import java.util.List;public class Emp { private Integer empno; private String ename; private String job; private Integer mgrA;//这里与数据库字段名称不同,数据库字段为mgr public Integer getEmpno() { return empno; } public void setEmpno(Integer empno) { this.empno = empno; } public String getEname() { return ename; } public void setEname(String ename) { this.ename = ename; } public String getJob() { return job; } public void setJob(String job) { this.job = job; } public Emp() { super(); // TODO Auto-generated constructor stub } public Integer getMgrA() { return mgrA; } public void setMgrA(Integer mgrA) { this.mgrA = mgrA; } public Emp(Integer empno, String ename, String job, Integer mgrA) { super(); this.empno = empno; this.ename = ename; this.job = job;// this.mgrA = mgrA; } @Override public String toString() { return "Emp [empno=" + empno + ", ename=" + ename + ", job=" + job + "]"; //+ ", mgrA=" + mgrA }}
DBUtils
package com.zsl.utils;import java.io.IOException;import java.io.InputStream;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class DbUtils { public static SqlSession getSession() throws IOException { // TODO Auto-generated method stub // 1.通过Resources对象加载配置文件 InputStream inputStream = Resources.getResourceAsStream("mybatis-cfg.xml"); // 2.获取SqlSessionFactory对象 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream); // 3.通过SqlSessionFactory对象获取SQLSession对象 SqlSession session = factory.openSession(); return session; } public static void commit(SqlSession session) { // TODO Auto-generated method stub session.commit(); } public static void close(SqlSession session) { // TODO Auto-generated method stub session.close(); }}
测试类Test
package com.zsl.test;import java.io.IOException;import java.io.InputStream;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;import java.util.ArrayList;import java.util.List;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import com.zsl.dao.EmpMapper;import com.zsl.pojo.Emp;import com.zsl.utils.DbUtils;public class Test { public static void main(String[] args) throws IOException { Test test = new Test(); System.out.println(test.addUser3()); } public Integer addUser1() throws IOException { // TODO Auto-generated method stub SqlSession session = DbUtils.getSession(); EmpMapper mapper = session.getMapper(EmpMapper.class); Integer integer = mapper.addEmp1("zsladd1", "程序员1"); session.commit(); session.close(); return integer; } public Integer addUser2() throws IOException { // TODO Auto-generated method stub SqlSession session = DbUtils.getSession(); EmpMapper mapper = session.getMapper(EmpMapper.class); Integer integer = mapper.addEmp2("zsladd2", "程序员2"); session.commit(); session.close(); return integer; } public Integer addUser3() throws IOException { // TODO Auto-generated method stub SqlSession session = DbUtils.getSession(); EmpMapper mapper = session.getMapper(EmpMapper.class); Integer integer = mapper.addEmp3("zsladd3", "程序员3"); session.commit(); session.close(); return integer; } public Integer addUser4() throws IOException { // TODO Auto-generated method stub SqlSession session = DbUtils.getSession(); EmpMapper mapper = session.getMapper(EmpMapper.class); Integer integer = mapper.addEmp4("zsladd4", "程序员4"); session.commit(); session.close(); return integer; } public Emp getEmpById() throws IOException { // TODO Auto-generated method stub SqlSession session = DbUtils.getSession(); EmpMapper mapper = session.getMapper(EmpMapper.class); Emp emp = mapper.getEmpById(7902); session.close(); return emp; } public ListselEmp() throws IOException { // TODO Auto-generated method stub SqlSession session = DbUtils.getSession(); EmpMapper mapper = session.getMapper(EmpMapper.class); List list = mapper.selEmp(); return list; } public Integer addUser() throws IOException { // TODO Auto-generated method stub SqlSession session = DbUtils.getSession(); EmpMapper mapper = session.getMapper(EmpMapper.class); Emp emp = new Emp(); emp.setEname("zsl00"); emp.setJob("程序员00"); Integer integer = mapper.addEmp(emp); System.out.println("该条记录主键:" + emp.getEmpno()); session.commit(); session.close(); return integer; } public Emp getEmpById2() throws IOException { // TODO Auto-generated method stub SqlSession session = DbUtils.getSession(); EmpMapper mapper = session.getMapper(EmpMapper.class); Emp emp = mapper.getEmpById2(7900); session.close(); return emp; } public Emp getEmpById3() throws IOException { // TODO Auto-generated method stub SqlSession session = DbUtils.getSession(); EmpMapper mapper = session.getMapper(EmpMapper.class); Emp emp2 = new Emp(); emp2.setEname("JAMES"); Emp emp = mapper.getEmpById3(emp2); return emp; } public Integer updateEmprById2() throws IOException { // TODO Auto-generated method stub SqlSession session = DbUtils.getSession(); EmpMapper mapper = session.getMapper(EmpMapper.class); Emp emp = new Emp(); emp.setEmpno(7941); emp.setEname("zsl55"); emp.setJob("程序员55"); Integer integer = mapper.updateEmprById2(emp); session.commit(); session.close(); return integer; } public Integer updateEmprById3() throws IOException { // TODO Auto-generated method stub SqlSession session = DbUtils.getSession(); EmpMapper mapper = session.getMapper(EmpMapper.class); Emp emp = new Emp(); emp.setEmpno(7941); emp.setEname("zsl77"); emp.setJob("程序员77"); Integer integer = mapper.updateEmprById2(emp); session.commit(); session.close(); return integer; } public Emp getEmpById4() throws IOException { // TODO Auto-generated method stub SqlSession session = DbUtils.getSession(); EmpMapper mapper = session.getMapper(EmpMapper.class); Emp emp2 = new Emp(); emp2.setEname("JAMES"); Emp emp = mapper.getEmpById3(emp2); session.close(); return emp; } public List getEmpById5() throws IOException { // TODO Auto-generated method stub SqlSession session = DbUtils.getSession(); EmpMapper mapper = session.getMapper(EmpMapper.class); List list = new ArrayList<>(); list.add(7969); list.add(7970); list.add(7971); List empList = mapper.getEmpById5(list); session.close(); return empList; } public Integer addEmp6() throws IOException { // TODO Auto-generated method stub SqlSession session = DbUtils.getSession(); EmpMapper mapper = session.getMapper(EmpMapper.class); List emps = new ArrayList<>(); Emp emp = new Emp(); emp.setEname("zsl88"); emp.setJob("程序员88"); emps.add(emp); Emp empA = new Emp(); empA.setEname("zsl99"); empA.setJob("程序员99"); emps.add(empA); int addEmp6 = mapper.addEmp6(emps); session.commit(); session.close(); return addEmp6; } public List selEmp1() throws IOException { // TODO Auto-generated method stub SqlSession session = DbUtils.getSession(); EmpMapper mapper = session.getMapper(EmpMapper.class); List list = mapper.selEmp1(); session.close(); return list; } public Emp getEmpById6() throws IOException { // TODO Auto-generated method stub SqlSession session = DbUtils.getSession(); EmpMapper mapper = session.getMapper(EmpMapper.class); Emp emp = mapper.getEmpById6(); session.close(); return emp; }}