一、定义实体类 ,注意需求 是一对多还是多对一。  这里用员工和部门  多对一的关系举例。

  

package com.zs.entity;
/*
* /*
* 多对一?
* 多个员工 对应一个部门 一个部门里面有很多信息
* 我们用一个java bean对象来表示
* 如何表示 一个部门 Dept dept;
*
* */
public class Emp {
private int id;
private String ename;
private String job;
private Dept dept;
private double sal; public Emp() {
} public Emp(int id) {
this.id=id;
} public Emp(int id, String ename) {
this.id = id;
this.ename = ename;
} public Emp(int id, String ename, String job, Dept dept, double sal) {
this.id = id;
this.ename = ename;
this.job = job;
this.dept = dept;
this.sal = sal;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} 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 Dept getDept() {
return dept;
} public void setDept(Dept dept) {
this.dept = dept;
} public double getSal() {
return sal;
} public void setSal(double sal) {
this.sal = sal;
} @Override
public String toString() {
return "Emp{" +
"id=" + id +
", ename='" + ename + '\'' +
", job='" + job + '\'' +
", dept=" + dept +
", sal=" + sal +
'}';
}
}
package com.zs.entity;

import java.util.List;

public class Dept {
private int deptno;
private String dname;
private List<Emp> emps; public Dept() { } public Dept(int deptno) {
this.deptno = deptno;
} public int getDeptno() {
return deptno;
} public void setDeptno(int deptno) {
this.deptno = deptno;
} public String getDname() {
return dname;
} public void setDname(String dname) {
this.dname = dname;
} public List<Emp> getEmps() {
return emps;
} public void setEmps(List<Emp> emps) {
this.emps = emps;
} @Override
public String toString() {
return "Dept{" +
"deptno=" + deptno +
", dname='" + dname + '\'' +
", emps=" + emps +
'}';
}
}

二、1.在接口中带定义增删改查的方法  注意接口中的参数设置

2.映射文件中添加增删改查。

  

package com.zs.dao;

import com.zs.entity.Emp;

import java.util.List;

public interface EmpDao {
List<Emp> listEmp(); //添加员工
int insertEmp(Emp emp); //删除员工 1.id是int 类型的,这里可以直接定义 (int id) 删除数据 使用 int deleteEmp (int id);
// 2.定义(emp id)也是根据id 删除信息,但是这种方法需要在emp实体类中设置一个关于 id 的构造方法。
//3. 综上所述 ,在删除信息是 还是直接定义 int id 来解决问题。
int deleteEmp(Emp id); //修改 1.根据id 修改信息 需要在实体类中添加构造方法 这里的id 需要用到emp 实体类中的id 所以类型用到emp
//2.直接定义 int id; 再修改值的时候需要传值,就是需要加入 我们所要修改的值,只定义一个id,
int updateEmp(Emp id);
}

三、测试

import com.zs.dao.EmpDao;
import com.zs.entity.Dept;
import com.zs.entity.Emp;
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 java.io.IOException;
import java.util.List; public class Test {
public static void main(String[] args) throws IOException {
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
SqlSession sqlSession = sqlSessionFactory.openSession();
EmpDao empDao = sqlSession.getMapper(EmpDao.class); //添加值的方式。 1.通过构造方法直接填入 2.通过set 方法
Dept dept = new Dept(1);
Emp emp2 = new Emp();
emp2.setDept(dept); Emp emp1 = new Emp(1, "典韦", "将军", dept, 100);
empDao.insertEmp(emp1);
sqlSession.commit(); // System.out.println(emp1); List<Emp> empList = empDao.listEmp();
for (Emp emp : empList) {
System.out.println(emp);
} }
}
<?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.zs.dao.EmpDao"> <!--
多个员工指向一个部门 多对一 select * from emp inner join dept on emp.deptno=dept.deptno;
在emp实体类中并没有直接设置deptno的私有属性 但是设置了dept这个对象啊。 可以通过打点的方式 来调用 dept.deptno
-->
<resultMap id="emp" type="com.zs.entity.Emp" autoMapping="true">
<association property="dept" column="deptno" javaType="com.zs.entity.Dept" autoMapping="true"/>
</resultMap> <select id="listEmp" resultMap="emp">
select emp.*,dept.deptno from emp inner join dept where emp.deptno=dept.deptno order by emp.deptno desc ;
</select> <!--增删改 不需要返回值-->
<insert id="insertEmp" >
insert into emp (ename, job, sal, deptno)values (#{ename},#{job},#{sal},#{dept.deptno});
</insert> <delete id="deleteEmp">
delete from emp where id=#{id};
</delete> <update id="updateEmp" >
update emp set ename=#{ename} where id=#{id};
</update> </mapper>

mybatis 接口中定义方法、映射文件、实体类之间的关系?的更多相关文章

  1. AE中网络分析的实现 的各个类之间的关系

    原文AE中网络分析的实现 的各个类之间的关系 1.     创建网络数据集 在ArcCatalog中勾选网络分析模块,新建个人地理信息数据库—>新建要素数据集—>批量导入要素—>创建 ...

  2. 请解释ASP. NET中的web页面与隐藏类之间的关系

    请解释ASP.NET中的web页面与其隐藏类之间的关系 其实页面与其隐藏类之间就是一个部分类的关系,你在页面上放一个一个的控件就是在这个类中定义一个一个的属性, 因为是同一个类的部分类的关系,所以隐藏 ...

  3. 教你在Java接口中定义方法

    基本上所有的Java教程都会告诉我们Java接口的方法都是public.abstract类型的,没有方法体的. 但是在JDK8里面,你是可以突破这个界限的哦. 假设我们现在有一个接口:TimeClie ...

  4. 全面解释java中StringBuilder、StringBuffer、String类之间的关系

    StringBuilder.StringBuffer.String类之间的关系 java中String.StringBuffer.StringBuilder是编程中经常使用的字符串类,在上一篇博文中我 ...

  5. python中对象、类型和元类之间的关系

    在python中对象.类型和元类构成了一个微妙的世界. 他们有在这个世界里和平共处,相辅相成.它们遵循着几条亘古不变的定律: 1.python中无处不对象 2.所有对象都有三种特性:id.类型.值 3 ...

  6. Python中对象、类型、元类之间的关系

    Python里的对象.类型和元类的关系很微妙也很有意思. 1989年圣诞节期间,上帝很无聊,于是创造了一个世界. 对象 在这个世界的运转有几条定律. 1.一切都是对象 对象(object)是这个世界的 ...

  7. 请解释ASP.NET中的web页面与其隐藏类之间的关系

    其实页面与其隐藏类之间就是一个部分类的关系,你在页面上放一个一个的控件就是在这个类中定义一个一个的属性, 因为是同一个类的部分类的关系,所以隐藏类可以访问到页面上控件,这样做是为了把展现与处理逻辑分开 ...

  8. 请解释ASP.NET 中的web 页面与其隐藏类之间的关系?

    一个ASP.NET 页面一般都对应一个隐藏类,一般都在ASP.NET 页面的声明中指定了隐藏类例如一个页面 Tst1.aspx 的页面声明如下 <%@ Page language="c ...

  9. java中StringBuilder、StringBuffer、String类之间的关系

    今天在CSDN的高校俱乐部里看到了"Java基础水平測试(英文)".感觉自己学了java这么久,想看下自己的java水平究竟是个什么样.測试结果就不说了,反正是慘不忍睹. 看了一下 ...

随机推荐

  1. 教学日志:javaSE-面向对象1

    对象,类,属性,方法的理解 package com.tengxun.class6.oop1; /** * @Auther: Yu Panpan * @Date: 2021/12/7 - 12 - 07 ...

  2. 深入理解Java虚拟机二:垃圾收集与内存分配

    垃圾收集:垃圾收集要完成三件事,包括哪些内存需要回收,什么时候回收及如何回收. 1.需要回收的内存判定:没有引用指向原先分配给某个对象的内存时,则该内存是需要回收的垃圾 Java垃圾收集器在对内存进行 ...

  3. JSON生成Java实体类

    https://www.bejson.com/json2javapojo/new/ 至于效果怎么样,自己试一下就知道了

  4. gPRC基本介绍

    1.说明 gRPC英文全名为Google Remote Procedure Call, 即Google远程过程调用, 是Google发布的一个高性能.通用的开源RPC框架, 2.gRPC定义 gRPC ...

  5. Zookeeper使用超级用户删除带权限的节点

    1.背景 Zookeeper管理员会因为某些客户端对某些节点设置了权限,而导致在紧急的情况下无法修改这些节点感到困扰.在这种情况下,管理员可以通过Zookeeper超级用户模式访问这些节点,一旦设置了 ...

  6. Win10 开启 Hyper-V 及简单使用

    简介 Windows 10 上内置了 Hyper-V.Hyper-V 提供硬件虚拟化,每个虚拟机都在虚拟硬件上运行. 系统要求 Windows 10 企业版.专业版或教育版.家庭版.移动版.移动企业版 ...

  7. 木棒poj1011

    题目描述 乔治拿来一组等长的木棒,将它们随机地砍断,使得每一节木棍的长度都不超过50个长度单位. 然后他又想把这些木棍恢复到为裁截前的状态,但忘记了初始时有多少木棒以及木棒的初始长度. 请你设计一个程 ...

  8. [ python应用 ] python递归搜索文件,支持搜索多个文件,支持自定义处理动作

    写了一个PyQT界面的版本:https://github.com/LongchuanYu/pyqt_project PATH = r'E:\MyDocument\新しいフォルダー\' # 要搜索的目录 ...

  9. Shell统计每个单词出现的个数

    题目链接 题目描述 写一个 bash脚本以统计一个文本文件 nowcoder.txt 中每个单词出现的个数. 为了简单起见,你可以假设: nowcoder.txt只包括小写字母和空格. 每个单词只由小 ...

  10. gitlab新增ssh

    https://blog.csdn.net/u011925641/article/details/79897517