ssm框架作业3

1>动态sql练习关于员工的条件查询+分页
//firstname,lastname,email,salary,departid
List getPageData(EmpVo vo);//分页

<select id="findPageData" resultType="com.openlab.pojo.Employees">
        SELECT * FROM employees
        <include refid="condSql3"></include>
         limit #{start},#{pageSize}
    </select>

int getCount(EmpVo vo);

 <select id="getCount" resultType="int">
        select count(1) from employees
       <include refid="condSql3"></include>
   </select>

List findByIds(List ids);

<select id="findByIds" resultType="com.openlab.pojo.Employees">
        SELECT * FROM employees
        <foreach collection="list" item="_id" separator="," open="WHERE employee_id IN(" close=")">
              #{_id}
        </foreach>
    </select>

void save(List list);

<insert id="save">
        INSERT INTO employees(first_name,last_name,sex,email) VALUES
        <foreach collection="list" item="emp" separator=",">
            (#{emp.firstName},#{emp.lastName},#{emp.sex},#{emp.email})
        </foreach>
    </insert>

void update(Employee employee);//set

<update id="update">
         UPDATE employees
         <set>
             <if test="firstName!=null and firstName.trim()!=''">
                 first_name=#{firstName},
             </if>
             <if test="lastName!=null and lastName.trim()!=''">
                 last_name=#{lastName},
             </if>
             <if test="email!=null and email.trim()!=''">
                 email=#{email},
             </if>
             <if test="salary!=null and salary!=0">
                 salary=#{salary},
             </if>
         </set>
             where employee_id=#{employeeId}
     </update>

缓存的练习
测试一级缓存,一级缓存失效的情况
一级缓存

 @Test
    public void testFirstCache() {
        SqlSession session = null;

        try {
            InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
            session = factory.openSession();
            EmployeesMapper employeesMapper = session.getMapper(EmployeesMapper.class);
            Employees employees = employeesMapper.findOnById(1);
            System.out.println(employees);
            Employees employees21 = employeesMapper.findOnById(1);//不会发送sql语句的
            System.out.println(employees21);

            session.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

在这里插入图片描述
一级缓存失效

 @Test
    public void testFirstCache3() {
        SqlSession session = null;
        try {
            InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
            session = factory.openSession();
            EmployeesMapper employeesMapper = session.getMapper(EmployeesMapper.class);

            Employees employees = employeesMapper.findOnById(1);
            System.out.println(employees);
            session.clearCache();
            Employees employees2 = employeesMapper.findOnById(1);
            System.out.println(employees2);


            session.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

在这里插入图片描述

测试二级缓存,了解二级缓存失效

 @Test
    public void testSecondCache() {
        SqlSession session = null;
        SqlSession session1 = null;

        try {
            InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
            session = factory.openSession();
            session1 = factory.openSession();
            EmployeesMapper employeesMapper = session.getMapper(EmployeesMapper.class);

            EmployeesMapper employeesMapper2 = session1.getMapper(EmployeesMapper.class);

            Employees employees = employeesMapper.findOnById(1);// 二级中去找,发现没有,还得看一级有没有,没有查数据库
            System.out.println(employees);
            System.out.println(employees.getEmployeeId() + "\t" + employees.getFirstName());
            Employees employees21 = employeesMapper.findOnById(1);
            System.out.println(employees21);
            session.close();//session关闭,对象[copy]就会放到二级缓存中
        
            System.out.println("---------执行增删改的操作------------");

            Employees employees2 = employeesMapper2.findOnById(1);// 先到二级缓存中查找,找到了,没发送sql
            System.out.println(employees2);
            System.out.println(employees.getEmployeeId() + "\t" + employees.getFirstName());
            employeesMapper2.delete(2006);
            session1.commit();
            System.out.println("---------------------------------");//0.25  1/4
            employees2 = employeesMapper2.findOnById(1);// 先到二级缓存中查找,找到了,没发送sql
            System.out.println(employees2);
            session1.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值