IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 使用Mybatis 在IDEA中的操作 -> 正文阅读

[开发工具]使用Mybatis 在IDEA中的操作

1.常用快捷键

2.IDEA连接数据库

在这里插入图片描述

jdbc:mysql://localhost:3306/yang?serverTimezone=GMT

3. Free-MyBatis-plugin

**Dao.java 上写新的方法后,Ctrl + 点击可以直接跳转到 **Dao.xml 中,并生成对应的代码

4.EasyCode

下载相应的插件,然后在对应的右键 -> Easy Code -> Generate Code, 可直接生成 entity,dao, service和controller层对应代码

在这里插入图片描述

5. 自动生成数据库表对应的实体类以及配置文件

首先需要已经连接数据库,
然后在对应的右键 -> mybatis-generator,
选择对应实体类、Dao.java 和 Dao.xml 的路径
在这里插入图片描述
在这里插入图片描述

6. 导入lombok jar包,在实体类使用@Data,从而取消get,set,toString方法

pom.xml

 <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.18</version>
        </dependency>

实体类

@Data
public class Dept implements Serializable {
    private Integer deptno;

    private String dname;

    private String loc;

    private static final long serialVersionUID = 1L;
}

7. 自动生成测试类

光标移动到 **Dao.java 类名上,
然后 右键 -> generater -> Test

选择需要进行测试的方法

在这里插入图片描述
在这里插入图片描述

8. 多个条件查询

  1. 使用注解的方式(推荐使用)

**Dao.java

List<Dept> findByDeptNameAndLoc(@Param("name") String name, @Param("loc") String loc);

****Dao.xml

<select id="findByDeptNameAndLoc" resultType="com.zzu.entity.Dept">
        select * from dept where dname=#{name} and loc=#{loc}
  </select>
  1. 使用内置变量 param1,param2的方式

  2. 使用内置变量 arg0, arg1的方式

  3. 使用Map封装变量

9. resultType与resultMap

 <resultMap id="BaseResultMap" type="com.zzu.entity.Dept">
    <id column="deptno" jdbcType="INTEGER" property="deptno" />
    <result column="dname" jdbcType="VARCHAR" property="dname" />
    <result column="loc" jdbcType="VARCHAR" property="loc" />
  </resultMap>

10. 一对一,一对多

1. 一对一,assocation

	<!--一个emp对应一个dept-->
  <resultMap id="EmpDeptMap" type="com.zzu.entity.Emp" autoMapping="true">
  	 <!--emp的主键-->
    <id property="empno" column="empno"/>
    <!--emp的外键,需要再resultMap中进行映射说明, 不然的话即使autoMapping="true"(自动映射为true),仍然会查不到该外键-->
    <result property="deptno" column="deptno"/> 

	<!--dept: Emp.java中的dept, deptno:emp的外键,dept的主键-->
    <association property="dept" javaType="com.zzu.entity.Dept" column="deptno" autoMapping="true">
    <!--映射内容最好写全-->
      <id column="deptno" property="deptno"/>
      <result column="dname" property="dname"/>
      <result column="loc" property="loc"/>
    </association>
  </resultMap>
  <select id="findAllEmp" resultMap="EmpDeptMap">
    select e.*, d.*
    from emp e left join dept d on e.deptno = d.deptno
  </select>
  <select id="findAllEmp2" resultMap="EmpDeptMap">
    select e.*, d.*
    from emp e, dept d 
    where e.deptno = d.deptno
  </select>

2. 一对多,collection

	
	<!--一个dept对应多个emp-->
  <resultMap id="deptEmpMap" type="com.zzu.entity.Dept" autoMapping="true">
    <id property="deptno" column="deptno"></id>
    
    <collection property="emps" ofType="com.zzu.entity.Emp" autoMapping="true">
      <id property="empno" column="empno"/>
    </collection>
  </resultMap>
  
  <select id="findAllDeptEmp" resultMap="deptEmpMap">
    select d.*, e.*
    from dept d inner join emp e on d.deptno = e.deptno
  </select>

11. 动态查询

1. <if>

<select id="findByDeptNameAndLoc" resultMap="BaseResultMap">
        select *
        from dept
        where 1=1
        <!--name 为 java方法中的参数 (@Param String name)-->
        <if test="name!='' and name!=null">
          and dname=#{name}
        </if>

        <if test="loc!='' and loc!=null">
          and loc=#{loc}
        </if>

  </select>

2. <when> <otherwise>

对应java中的 switch

3. <where>

12. 批量操作

for each 批量操作

**Dao.java

 int addDeptBatch(@Param("depts") List<Dept> depts);

 int deleteDeptBatch(@Param("ids") List<Integer> ids);

**Dao.xml

  <!--批量删除-->
  <delete id="deleteDeptBatch">
    delete from dept where deptno in
    <foreach collection="ids" separator="," open="(" close=")" item="id">
        #{id}
    </foreach>
  </delete>
  <!--批量添加-->
    <insert id="addDeptBatch" keyProperty="deptno" useGeneratedKeys="true">
    insert into dept(dname, loc) values
    <foreach collection="depts" item="dept" separator=",">
      (#{dept.dname}, #{dept.loc})
    </foreach>

  </insert>

对应查询语句:
在这里插入图片描述

在这里插入图片描述

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-11-24 08:09:39  更:2021-11-24 08:11:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 18:45:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码