日结

今日上午学习完了spring,下午和晚上学习了mybatis,包括这些

 单表crud小练习

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace = 接口的全限定符 -->
<mapper namespace="com.atguigu.mapper.EmployeeMapper">

    <!-- DML -->
    <delete id="deleteById" >
        delete from t_emp where emp_id = #{id}
    </delete>

    <!--
       场景1: 返回单个简单类型如何指定  resultType的写法! 返回值的数据类型!!
               resultType语法:
                   1.类的全限定符号
                   2.别名简称
                      mybatis给我们提供了72种默认的别名!
                      这些都是我们常用的Java数据类型!  [java的常用数据类型]
                             基本数据类型 int  double  -> _int _double
                             包装数据类型 Integer Double  -> int integer double
                             集合容器类型 Map List  HashMap -> 小写即可 map list hashmap

                扩展:如果没有没有提供的需要自己定义或者写类的全限定符号
                   给自己声明的类如何定义别名:
                   mybatis-config.xml
                     给类单独定义别名!!!
                      <typeAliases>
                          <typeAlias type="com.atguigu.pojo.Employee" alias="ergouzi" />
                      </typeAliases>
                      批量设置:
                       <typeAliases>
                           批量将包下的类给与别名,别名就是类的首字母小写!
                           <package name="com.atguigu.pojo"/>
                       </typeAliases>
                       扩展,如果不想使用批量的别名,可以使用注解给与名字!
                       @Alias("ergouzi")
    -->

    <select id="queryNameById" resultType="string">
        select emp_name from t_emp where emp_id = #{id}
    </select>


    <select id="querySalaryById" resultType="_double">
        select emp_salary from t_emp where emp_id = #{id}
    </select>

    <!--
       场景2: 返回单个自定义类类型
        //返回单个自定义实体类型
        Employee queryById(Integer id);
        resultType : 返回值类型即可

        默认要求:
           查询,返回单个实体类型,要求列名和属性名要一致!
           这样才可以进行实体类的属性映射!

        但是可以进行设置,设置支持驼峰式自动映射!
           emp_id  -> empId ===  empId
        mybatis-config.xml
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    -->

    <select id="queryById" resultType="employee" >
        select  *
           from t_emp where emp_id = ${id}
    </select>


    <!-- 场景3: 返回map
                 当没有实体类可以使用接值的时候!
                 我们可以使用map接受数据!
                 key - > 查询的列
                 value -> 查询的值
    -->
    <select id="selectEmpNameAndMaxSalary" resultType="map">
        SELECT
            emp_name 员工姓名,
            emp_salary 员工工资,
            (SELECT AVG(emp_salary) FROM t_emp) 部门平均工资
            FROM t_emp WHERE emp_salary=(
            SELECT MAX(emp_salary) FROM t_emp
            )
    </select>

    <!--
       场景4: 返回的是集合类型如何指定
        //查询工资高于传入值的员工姓名们 200
        List<String> queryNamesBySalary(Double salary);

        //查询全部员工信息
        List<Employee> queryAll();
        Employee queryById();

        切记: 返回值是集合。resultType不需要指定集合类型,只需要指定泛型即可!!
        为什么?
            mybatis -> ibatis -> selectOne 单个  | selectList 集合 -》  selectOne 调用 [ selectList ]
    -->
    <select id="queryNamesBySalary" resultType="string">
        select emp_name from t_emp where emp_salary > #{ salary }
    </select>

    <select id="queryAll" resultType="employee">
        select * from t_emp
    </select>


    <!--
       场景5: 主键回显 获取插入数据的主键
          1. 自增长主键回显 mysql  auto_increment
            //员工插入
            int insertEmp(Employee employee);
            useGeneratedKeys="true" 我们想要数据库自动增强的主键值
            keyColumn="emp_id" 主键列的值!!!
            keyProperty="empId" 接收主键列值的属性!!!
    -->

    <insert id="insertEmp" useGeneratedKeys="true" keyColumn="emp_id" keyProperty="empId">
        insert into t_emp (emp_name,emp_salary)
            value(#{empName},#{empSalary});
    </insert>
</mapper>

 目前对<insert>和<select>标签里的东西的编写还是存在问题,不熟悉

 

posted @ 2023-11-19 22:48  Men!  阅读(7)  评论(0编辑  收藏  举报