<mapper namespace="cn.wing._02_mapper.mapper.EmployeeMapper">
<insert id="save" parameterType="employee">
...
insert>
<select id="findAll" resultType="employee">
...
select>
mapper>
package cn.wing._02_mapper.mapper;
public interface EmployeeMapper {
void save(Employee employee);
// @Select("select * from employee")
List<Employee> findAll();
}
SqlSession session = MyBatisUtil.openSession();
EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
mapper.findAll().forEach(e -> System.out.println(e));
<select id="findByQuery" parameterType="employeeQuery" resultType="employee">
select * from employee <include refid="whereSql" />
select>
<sql id="whereSql">
<where>
<if test="name!=null and name!=''">
and name like concat("%",#{name},"%")
if>
<if test="minAge!=null">
and age >= #{minAge}
if>
<if test="maxAge!=null">
if>
where>
sql>
<delete id="batchDelete" parameterType="long[]">
delete from employee where id in
<foreach collection="array" item="v" open="(" close=")" separator=",">
#{v}
foreach>
delete>
<delete id="batchDelete" parameterType="list">
delete from employee where id in
<foreach collection="list" item="v" open="(" close=")" separator=",">
#{v}
foreach>
delete>
首先知道sql `insert into 表名 (p1,p2,…) values (#{p1},#{p2}),(#{p1},#{p2}),…
<insert id="batchSave" parameterType="list">
insert into employee (name,age,sex) values
<foreach collection="list" item="emp" separator=",">
(#{emp.name},#{emp.age},#{emp.sex})
foreach>
insert>
咱们修改一个对象,咱们只能修改有数据的部分
<update id="update" parameterType="cn.wing._02_mapper.domain.Employee">
UPDATE employee
<set>
<if test="name!=null and name!=''">
name = #{name},
if>
<if test="age!=null">
age=#{age},
if>
set>
WHERE id=#{id}
update>
public class Employee {
private Long id;
private String name;
private Integer age;
private Boolean sex;
private Department dept;
//... getter,setter与toString
}
public class Department {
private Long id;
private String name;
//... getter,setter与toString
}
<select id="findAll" resultMap="employeeMap">
select e.id eid,e.name ename,e.age,e.sex,d.id did,d.name dname
from employee e join department d on d.id = e.dept_id
select>
<resultMap id="employeeMap" type="employee">
<id property="id" column="eid" />
<result property="name" column="ename" />
<result property="sex" column="sex" />
<result property="age" column="age" />
<association property="dept" javaType="department">
<id property="id" column="did" />
<result property="name" column="dname" />
association>
resultMap>
##4.2 嵌套查询
employeeMapper.xml
<select id="findAll" resultMap="employeeMap">
SELECT * FROM employee
select>
<resultMap id="employeeMap" type="employee">
<id property="id" column="id" />
<result property="name" column="name" />
<result property="sex" column="sex" />
<result property="age" column="age" />
<association property="dept" javaType="department"
column="dept_id" select="cn.wing._04_many2one.DepartmentMapper.findById" />
resultMap>
departmentMapper.xml
<mapper namespace="cn.wing._04_many2one.DepartmentMapper">
<select id="findById" parameterType="long" resultType="department">
select * from department where id = #{id}
select>
mapper>
public class Employee {
private Long id;
private String name;
private Integer age;
private Boolean sex;
//... getter,setter与toString
}
public class Department {
private Long id;
private String name;
private List<Employee> employees = new ArrayList<>();