2021/07/31笔记

我们于2021/07/31 的学习目标是:MyBatis,核心任务为:

1、学习技术:

1)、MyBatis的参数类型

2)、三个常用的查询方法

3)、配置别名

4)、配置文件软编码

5)、接口绑定方案

2、文档总结

1)、MyBatis的参数类型

parameter入参类型:

  • 基本数据类型
  • 包装类
  • String
  • Date
  • Javabean
  • 数组
  • List
  • Map

resultType结果类型:

  • 基本数据类型
  • 包装类
  • String
  • Date
  • Javabean
  • List
  • Map

测试结果类型:

  • 基本数据类型
  • 包装类
  • String
  • Date
  • Javabean
  • 数组
  • List
  • Map

2)、三个常用的查询方法

selectOne() 

执行指定SQL,得到一个结果

selectList()

执行指定SQL,得到一个List集合,如果没查到,则返回一个没有数据的List(非null)

selectMap()

执行指定SQL,得到一个Map集合,没查到返回空Map

3)、配置别名

<typeAliases>

   <typeAlias type ="com.sdf.entity.Dept" alias="Dept"/>

<!—为包下所有JavaBean类添加别名,不区分大小写-->

</typeAliases>

4)、配置文件软编码

db.properties文件:

driver=oracle.jdbc.driver.OracleDriver

url=jdbc:oracle:thin:@localhost:1521:XE

username=SCOTT

password=TIGER

mybatis-config.xml文件中配置:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE configuration

        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

        "http://mybatis.org/dtd/mybatis-3-config.dtd">

<!--根元素: 核心配置-->

<configuration>

    <!-- 加载外部的properties文件 -->

    <properties resource="db.properties" />



    <!--配置别名,别名不区分大小写-->

    <typeAliases>

        <package name="com.sdf.pojo"/>

    </typeAliases>

    <!--环境配置-->

    <environments default="ev">

        <environment id="ev">

            <transactionManager type="JDBC"/>

            <dataSource type="POOLED">

                <property name="driver" value="${driver}"/>

                <property name="url" value="${url}"/>

                <property name="username" value="${username}"/>

                <property name="password" value="${password}"/>

            </dataSource>

        </environment>

    </environments>

    <!--sql映射配置加载-->

    <mappers>

        <mapper resource="com/sdf/mappers/EmpMapper.xml"/>

        <mapper resource="com/sdf/mappers/Tb_Student.xml"/>

    </mappers>

</configuration>

5)、接口绑定方案

emp的JavaBean:

import java.io.Serializable;

import java.util.Date;



public class Emp implements Serializable{

   private int empno;

   private String ename;

   private double sal;

   private Date hiredate;

   private int deptno;

  

   public Emp() {

      // TODO Auto-generated constructor stub

   }

   public Emp(int empno, String ename) {

      this.empno = empno;

      this.ename = ename;

   }

   public Emp(int empno, String ename, int deptno) {

      this.empno = empno;

      this.ename = ename;

      this.deptno = deptno;

   }



   public Emp(int empno, String ename, double sal, Date hiredate, int deptno) {

      super();

      this.empno = empno;

      this.ename = ename;

      this.sal = sal;

      this.hiredate = hiredate;

      this.deptno = deptno;

   }



   public int getEmpno() {

      return empno;

   }



   public void setEmpno(int empno) {

      this.empno = empno;

   }



   public String getEname() {

      return ename;

   }



   public void setEname(String ename) {

      this.ename = ename;

   }



   public double getSal() {

      return sal;

   }



   public void setSal(double sal) {

      this.sal = sal;

   }



   public Date getHiredate() {

      return hiredate;

   }



   public void setHiredate(Date hiredate) {

      this.hiredate = hiredate;

   }



   public int getDeptno() {

      return deptno;

   }



   public void setDeptno(int deptno) {

      this.deptno = deptno;

   }



   @Override

   public int hashCode() {

      final int prime = 31;

      int result = 1;

      result = prime * result + deptno;

      result = prime * result + empno;

      result = prime * result + ((ename == null) ? 0 : ename.hashCode());

      result = prime * result + ((hiredate == null) ? 0 : hiredate.hashCode());

      long temp;

      temp = Double.doubleToLongBits(sal);

      result = prime * result + (int) (temp ^ (temp >>> 32));

      return result;

   }



   @Override

   public boolean equals(Object obj) {

      if (this == obj)

         return true;

      if (obj == null)

         return false;

      if (getClass() != obj.getClass())

         return false;

      Emp other = (Emp) obj;

      if (deptno != other.deptno)

         return false;

      if (empno != other.empno)

         return false;

      if (ename == null) {

         if (other.ename != null)

            return false;

      } else if (!ename.equals(other.ename))

         return false;

      if (hiredate == null) {

         if (other.hiredate != null)

            return false;

      } else if (!hiredate.equals(other.hiredate))

         return false;

      if (Double.doubleToLongBits(sal) != Double.doubleToLongBits(other.sal))

         return false;

      return true;

   }



   @Override

   public String toString() {

      return "Emp [empno=" + empno + ", ename=" + ename + ", sal=" + sal + ", hiredate=" + hiredate + ", deptno="

            + deptno + "]";

   }

  


}

EmpMapper2.xml:

<?xml version="1.0" encoding="UTF-8"?>



<!DOCTYPE mapper SYSTEM "http://mybatis.org/dtd/mybatis-3-mapper.dtd" PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN">



<!--测试批量操作 -->



-<mapper namespace="com.sdf.mappers.EmpMapper2">





-<delete id="deleteEmpSome">

delete from emp where empno in

<foreach close=")" open="(" separator="," item="item" collection="list">#{item} </foreach>



</delete>





-<update id="updateEmpSome">



<foreach close=";end;" open="begin" separator=";" item="item" collection="list">update emp set ename=#{item.ename} where empno = #{item.empno} </foreach>



</update>





-<insert id="insertEmpSome">

insert into emp(empno, ename, deptno)

<foreach separator="union" item="item" collection="list">select #{item.empno}, #{item.ename}, #{item.deptno} from dual </foreach>



</insert>



</mapper>

EmpMapper2.java类

package com.sdf.mappers;



import com.sdf.pojo.Emp;

import org.apache.ibatis.annotations.Param;



import java.util.List;



/*

    测试接口绑定方案:

        1.定义接口

            定义抽象方法(业务)

        2.与接口相关联的sql映射文件

        3.测试使用



    实现基本crud

 */

public interface EmpMapper2 {

    //批量删除,根据员工编号删除员工数据

    public int deleteEmpSome(List<Integer> empno);



    //批量修改

    public int updateEmpSome(List<Emp> list);



    //批量插入

    public int insertEmpSome(List<Emp> list);

}



Class002_Interface_bind.java类

package com.sdf.test;



import com.sdf.mappers.EmpMapper;

import com.sdf.mappers.EmpMapper2;

import com.sdf.pojo.Emp;

import com.sdf.utils.SessionUtils;

import org.apache.ibatis.session.SqlSession;



import java.util.List;



/*

    测试接口绑定方案的基本使用

 */

public class Class002_interface_bind {

    public static void main(String[] args) {

        //1.获取回话

        SqlSession session = SessionUtils.getSession();

        //2.获取接口的实现类对象

        //接口多态

        EmpMapper2 mapper = session.getMapper(EmpMapper2.class);

        //3.调用功能

        mapper.deleteEmpSome(List.of(7878,7698));

        System.out.println("-------------------");

        mapper.updateEmpSome(List.of(new Emp(7369,"SMITHS"),new Emp(7839,"KINGS")));



        mapper.insertEmpSome(List.of(new Emp(7777,"haha",30),new Emp(8888,"hehe",20)));



        //4.关闭回话

        session.close();

    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值