学习笔记——Mybatis映射文件根标签与子标签

打印 上一主题 下一主题

主题 529|帖子 529|积分 1587

2023-01-09
一、Mybatis映射文件
1、映射文件根标签
mapping标签:
该标签中的namespace要求与接口的全类名一致
2、映射文件子标签
(1)cache(该命名空间的缓冲配置)
(2)cache-ref(引用其他命名空间的缓存配置)
(3)resultMap(描述如何从数据库结果集中加载对象,是最复杂也是最强大的元素)
注意:resultType解决不了的问题,交给resultMap(一般是多表查询)。
(4)sql(可被其他语句引用的可重用语句块)
(5)insert(映射插入语句)
(6)update(映射更新语句)
(7)delete(映射删除语句)
(8)select(映射查询语句)
3、示例代码
(1)“day02_mybatis.src.main.java.com.hh.mybatis.mapper.EmployeeMapper”中的代码
  1. package com.hh.mybatis.mapper;
  2. import com.hh.mybatis.pojo.Employee;
  3. import java.util.List;
  4. public interface EmployeeMapper {
  5.     /**
  6.      * 通过id获取员工信息
  7.      * @param empId
  8.      * @return
  9.      */
  10.     public Employee selectEmployee(int empId);
  11.     /**
  12.      * 添加员工信息
  13.      * @param employee
  14.      */
  15.     public void insertEmployee(Employee employee);
  16.     /**
  17.      * 删除员工信息
  18.      * @param empId
  19.      */
  20.     public void deleteEmployeeById(int empId);
  21.     /**
  22.      * 修改员工信息
  23.      * @param employee
  24.      */
  25.     public void updateEmployee(Employee employee);
  26.     /**
  27.      * 查询所有员工信息
  28.      * @return
  29.      */
  30.     public List<Employee> selectAllEmps();
  31. }
复制代码
(2)映射文件中的代码(day02_mybatis.src.main.resources.mapper下的EmployeeMapper.xml)
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3.         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4.         "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.hh.mybatis.mapper.EmployeeMapper">
  6.     <select id="selectEmployee" resultType="employee">
  7.         SELECT
  8.             id,
  9.             last_name,
  10.             email,
  11.             salary
  12.         FROM
  13.             tbl_employee
  14.         WHERE
  15.             id=#{empId}
  16.     </select>
  17.     <insert id="insertEmployee">
  18.         INSERT INTO
  19.             tbl_employee(last_name,email,salary)
  20.         VALUES
  21.             (#{lastName},#{email},#{salary})
  22.     </insert>
  23.     <delete id="deleteEmployeeById">
  24.         delete from
  25.             tbl_employee
  26.         where
  27.             id=#{empId}
  28.     </delete>
  29.     <update id="updateEmployee">
  30.         update
  31.             tbl_employee
  32.         set
  33.             last_name = #{lastName},
  34.             email = #{email},
  35.             salary = #{salary}
  36.         where
  37.             id = #{id}
  38.     </update>
  39.     <select id="selectAllEmps" resultType="employee">
  40.         SELECT
  41.             id,
  42.             last_name,
  43.             email,
  44.             salary
  45.         FROM
  46.             tbl_employee
  47.     </select>
  48. </mapper>
复制代码
(3)测试类代码(day02_mybatis.src.test.java.TestMybatis)
  1. import com.hh.mybatis.mapper.EmployeeMapper;
  2. import com.hh.mybatis.pojo.Employee;
  3. import org.apache.ibatis.io.Resources;
  4. import org.apache.ibatis.session.SqlSession;
  5. import org.apache.ibatis.session.SqlSessionFactory;
  6. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  7. import org.junit.Test;
  8. import java.io.IOException;
  9. import java.io.InputStream;
  10. import java.util.List;
  11. public class TestMybatis {
  12.     @Test
  13.     public void TestMybatis(){
  14.         try {
  15.             String resource = "mybatis-config.xml";
  16.             InputStream inputStream = Resources.getResourceAsStream(resource);
  17.             SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
  18.             //通过sqlSessionFactory获取sqlSession对象
  19.             SqlSession sqlSession = sqlSessionFactory.openSession();
  20.             //获取EmployeeMapper的代理对象
  21.             EmployeeMapper employeeMapper = sqlSession.getMapper(EmployeeMapper.class);
  22.             System.out.println("employeeMapper.getClass().getName() = " + employeeMapper.getClass().getName());
  23.             Employee employee = employeeMapper.selectEmployee(1);
  24.             System.out.println("employee = " + employee);
  25.         } catch (IOException e) {
  26.             e.printStackTrace();
  27.         }
  28.     }
  29.     /**
  30.      * 测试添加员工
  31.      */
  32.     @Test
  33.     public void TestMybatisInsert(){
  34.         try {
  35.             String resource = "mybatis-config.xml";
  36.             InputStream inputStream = Resources.getResourceAsStream(resource);
  37.             SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
  38.             //通过sqlSessionFactory获取sqlSession对象
  39.             SqlSession sqlSession = sqlSessionFactory.openSession();
  40.             //获取EmployeeMapper的代理对象
  41.             EmployeeMapper employeeMapper = sqlSession.getMapper(EmployeeMapper.class);
  42. //            Employee wangwu = new Employee(null,"wangwu","zs@163.com",50.0);
  43.             //测试添加员工信息
  44. //            employeeMapper.insertEmployee(wangwu);
  45.             //测试删除员工信息
  46. //            employeeMapper.deleteEmployeeById(2);
  47. //            Employee wangwu = new Employee(1,"zhangsan1","zs1@163.com",102.0);
  48. //
  49. //            employeeMapper.updateEmployee(wangwu);
  50.             //查询所有员工信息
  51.             List<Employee> employees = employeeMapper.selectAllEmps();
  52.             for (Employee employee : employees) {
  53.                 System.out.println("employee = " + employee);
  54.             }
  55.             //提交事务
  56.             sqlSession.commit();
  57.         } catch (IOException e) {
  58.             e.printStackTrace();
  59.         }
  60.     }
  61. }
复制代码
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

缠丝猫

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表