前提:需要的包log4j.jar,mybatis-3.4.1.jar,mysql-connector-java-5.1.37-bin.jar

1.基本类

员工类

package com.hand.mybatis.bean;

public class Employee {
    
    private Integer eId;
    private String eName;
    private Integer gender;
    private String email;
    private Department dept;
    public Employee() {
        super();
    }
    public Employee(Integer eId,String eName, Integer gender, String email) {
        super();
        this.eId=eId;
        this.eName = eName;
        this.gender = gender;
        this.email = email;
    }
    public Integer geteId() {
        return eId;
    }
    public void seteId(Integer eId) {
        this.eId = eId;
    }
   
    public String getEName() {
        return eName;
    }
    public void setEname(String ename) {
        this.eName = ename;
    }
    public Integer getGender() {
        return gender;
    }
    public void setGender(Integer gender) {
        this.gender = gender;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    
    
    
    public Department getDept() {
        return dept;
    }

public void setDept(Department dept) {
        this.dept = dept;
    }
    @Override
    public String toString() {
        return "Employee [eId=" + eId + ", ename=" + eName + ", gender=" + gender + ", email=" + email + "]";
    }

}

部门类

package com.hand.mybatis.bean;
import java.util.List;

public class Department {
    private Integer id;
    private String departName;
    private List<Employee> empList;
    
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getDepartName() {
        return departName;
    }
    public void setDepartName(String departName) {
        this.departName = departName;
    }
    
    public List<Employee> getEmpList() {
        return empList;
    }
    public void setEmpList(List<Employee> empList) {
        this.empList = empList;
    }
   
    @Override
    public String toString() {
        return "Department [id=" + id + ", departName=" + departName + "]";
    }
   
}

EmployeeMapper.java 接口

package com.hand.mybatis.dao;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;
import com.hand.mybatis.bean.Employee;

public interface EmployeeMapper {
    
    Employee selectEmployee(Integer eid);
    
    int addEmp(Employee employee);
    
    Boolean updateEmp(Employee employee);
    
    int deleteEmpById(Integer id);
    
    //传入多个参数的情况
    //Employee getEmp(@Param("id") Integer id,@Param("ename") String ename);
    
    //传入多个参数的情况(map)
    Employee getEmp(Map<String, Object> map);
    
    //集合List
    List<Employee> getEmpByeNameLike(String ename);
    
    //返回一条记录的map;key就是列名,值是对应的值
    Map<String, Object> getEmpByIdReturnMap(Integer id);
    
    //多条记录封装一个map:Map<Integer,Employee>:键是这条记录的主键,值是记录封装后的javaBean
    //告诉mybatis封装这个map的时候使用哪个属性作为map的key
    /*@MapKey("eId")
     Map<Integer, Employee> getEmpByLastNameLikeReturnMap(String ename);*/
    @MapKey("eName")
    Map<String, Employee> getEmpByLastNameLikeReturnMap(String ename);
   
}

EmployeeMapper.xml映射文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hand.mybatis.dao.EmployeeMapper">

<!-- mapper接口 public interface EmployeeMapper {} -->
 <!--  查找
  Employee selectEmployee(Integer eid); -->
 <select id="selectEmployee" resultType="com.hand.mybatis.bean.Employee">
   SELECT * FROM emp WHERE eid=#{eid}
 </select>
 
 <!--添加  
 int addEmp(Employee employee);-->
 <insert id="addEmp" useGeneratedKeys="true" keyProperty="eId">  //使用 useGeneratedKeys="true" keyProperty="eId" 调用接口时,可以获得主键eid
    insert into emp(ename,gender,email)
    VALUES(#{eName},#{gender},#{email})
 </insert>
 
 <!-- 更新
  Boolean updateEmp(Employee employee); -->  //返回值类型Boolen int void long 都行
 <update id="updateEmp">
   UPDATE emp SET ename=#{eName},gender=#{gender},email=#{email}
   WHERE eid=#{eId}
 </update>
 
 <!--删除
  int deleteEmpById(Integer id); -->
 <delete id="deleteEmpById">
    DELETE FROM emp WHERE eid=#{eid}
 </delete>
 
 <!--   
     //传入多个参数的情况
    //Employee getEmp(@Param("id") Integer id,@Param("ename") String ename); //使用@Param()注解
    
    //传入多个参数的情况(map)  
    Employee getEmp(Map<String, Object> map); --> //调用接口时,需要给map赋值

<select id="getEmp" resultType="com.hand.mybatis.bean.Employee">
  SELECT * FROM emp WHERE eid=#{id} AND ename=#{ename}
 </select>

  如:
    Map<String, Object> map=new HashMap<>(); 
    map.put("id", 101);

map.put("ename", "张三");
    Employee employee=employeeMapper.getEmp(map);
    System.out.println(employee);

<!-- //集合List
  List<Employee> getEmpByeNameLike(String ename); -->
 <select id="getEmpByeNameLike" resultType="com.hand.mybatis.bean.Employee">
  SELECT * FROM emp WHERE ename like #{ename}
 </select>
 
 <!--  //返回一条记录的map;key就是列名,值是对应的值
 Map<String, Object> getEmpByIdReturnMap(Integer id); -->
 <select id="getEmpByIdReturnMap" resultType="map">
 SELECT * FROM emp WHERE eid=#{id}
 </select>

调用 Map<String, Object> getEmpByIdReturnMap(Integer id)接口:

Map<String, Object> map= employeeMapper.getEmpByIdReturnMap(101);
    System.out.println(map);

结果:

    {eid=101, ename=张三, gender=0, email=2714763867@qq.com, did=1}

<!-- //多条记录封装一个map:Map<Integer,Employee>:键是这条记录的主键,值是记录封装后的javaBean
    //告诉mybatis封装这个map的时候使用哪个属性作为map的key
    /*@MapKey("eId")
     Map<Integer, Employee> getEmpByLastNameLikeReturnMap(String ename);*/
    @MapKey("eName")
    Map<String, Employee> getEmpByLastNameLikeReturnMap(String ename); -->
 <select id="getEmpByLastNameLikeReturnMap" resultType="com.hand.mybatis.bean.Employee">
 SELECT * FROM emp WHERE ename like #{ename}
 </select>
调用:

Map<Integer, Employee> map=employeeMapper.getEmpByLastNameLikeReturnMap("%张%");
  System.out.println(map);

结果 {101=Employee [eId=101, ename=张三, gender=0, email=2714763867@qq.com], 102=Employee [eId=102, ename=张丽, gender=0,       email=163826386@qq.com], 103=Employee [eId=103, ename=杨张, gender=1, email=21901826380863@163.com]}

</mapper>

代码:https://github.com/shuaishuaihand/mybatis.git

mybatis的sql映射文件—增删改查的更多相关文章

  1. Mybatis(3) 映射文件-增删改查

    映射文件: 映射文件是根据数据库模型生成的编写sql脚本xml文件, mapper标签中namespace属性值为对应模型实体类的全类名. <?xml version="1.0&quo ...

  2. mybatis 学习四(下) SQL语句映射文件增删改查、参数、缓存

    2.2 select 一个select 元素非常简单.例如: <!-- 查询学生,根据id --> <select id="getStudent" paramet ...

  3. SSMybatis整合 --详细解读Mybatis对oracle数据库进行增删改查(一)

    Mybatis是现在主流的持久化层框架,与Hibernate不同的是,它鼓励程序员使用原声SQL语句对数据库进行操作.因此提供了非常灵活的功能.特别是当数据库同时访问数过多,需要进行优化时,使用sql ...

  4. SpringBoot+Mybatis+Maven+MySQL逆向工程实现增删改查

    SpringBoot+Mybatis+MySQL+MAVEN逆向工程实现增删改查 这两天简单学习了下SpringBoot,发现这玩意配置起来是真的方便,相比于SpringMVC+Spring的配置简直 ...

  5. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_3-2.使用Mybatis注解开发视频列表增删改查

    笔记 2.使用Mybatis注解开发视频列表增删改查     讲解:使用Mybatis3.x注解方式 增删改查实操, 控制台打印sql语句              1.控制台打印sql语句      ...

  6. Mybatis(二) SQL映射文件

    SQL映射文件 单条件查询 1. 在UserMapper接口添加抽象方法 //根据用户名模糊查询 List<User> getUserListByName(); 2. 在UserMappe ...

  7. 使用java对sql server进行增删改查

    import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import ...

  8. 四种简单的sql语句(增删改查语句)

    四种简单的sql语句(增删改查语句) 一.插入语句 insert into [table] ([column],[column],[column]) values(?,?,?) 二.删除语句 dele ...

  9. dml语句就是你常写的sql语句,增删改查

    dml语句就是你常写的sql语句,增删改查

随机推荐

  1. 隐藏UITableView当没有数据或数据不够的时候出现的分割线.

    在没有分割先的情况下,添加如下方法,当实例化tableview的时候调用该方法. - (void)setExtraCellLineHidden: (UITableView *)tableView{ U ...

  2. WARNING:tensorflow:From /usr/lib/python2.7/site-packages/tensorflow/python/util/tf_should_use.py:189: initialize_all_variables (from tensorflow.python.ops.variables) is deprecated and will be removed

    initialize_all_variables已被弃用,将在2017-03-02之后删除. 说明更新:使用tf.global_variables_initializer代替. 就把tf.initia ...

  3. 修改Android模拟器的system分区,以及加入SuperSU

      http://www.claudxiao.net/2013/10/persistent-change-emulator-system-partition/ 对Android的模拟器,如果要修改其s ...

  4. 刚开始学Python,坚持下去

    嗯,刚开始学Python没几天,挺好的一门语言,十分简洁,也很好上手. 坚持下去,每天至少看一个小时的Python.

  5. A TCP connection is distinguished by four values

    4个值唯一地定义一条TCP连接. HTTP The Definitive Guide A computer might have several TCP connections open at any ...

  6. Java实现断点续传

    原理: 断点续传的关键是断点,所以在制定传输协议的时候要设计好,如上图,我自定义了一个交互协议,每次下载请求都会带上下载的起始点,这样就可以支持从断点下载了,其实HTTP里的断点续传也是这个原理,在H ...

  7. windows 下 方便工作的bat文件批处理命令

    1.删除目录下 不包含某串字符的文件: @echo offfor /f "delims=" %%a in ('dir /s /a-d/b *.mp3') do ( echo &qu ...

  8. Linux NAPI处理流程分析

    2017-05-10 今天重点对linux网络数据包的处理做下分析,但是并不关系到上层协议,仅仅到链路层. 之前转载过一篇文章,对NAPI做了比较详尽的分析,本文结合Linux内核源代码,对当前网络数 ...

  9. 前端框架之SweetAlert

    简介 SweetAlert是一款很好用的弹出框框架 下载 点我下载 导入 博主用的是bootstrap-sweetalert,所以要依赖bootstrap,导入前先导入原生jQuery以及bootst ...

  10. 【云安全与同态加密_调研分析(2)】国外云安全标准建议组织——By Me

    国际上比较有影响力的云安全组织: ◆2. 国外云安全标准建议组织(云安全建议白皮书)◆ ◆云安全标准建议组织(主要的)◆ ◆标准建议组织介绍◆ ◆相关建议白皮书制定◆ ◆建立的相关模型参考◆ ◆备注( ...