Mybatis框架:配置mybatis和junit测试

package com.sky.mapper;

import com.sky.pojo.Emp;
import com.sky.utils.BatisMapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;

public class EmpMapper {
//    需求:根据员工编号查询员工信息
    public Emp getEmpById(int empno) throws IOException {
        
        String config = "MybatisConfig.xml";
        InputStream inputStream = Resources.getResourceAsStream(config);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //  获取sqlSession对象
        SqlSession sqlSession = sqlSessionFactory.openSession();

        //  第一个参数:指定要执行的sql语句namespace + id
        //  第二个参数:真正的参数,没有就不用写
        Emp emp = sqlSession.selectOne("test.getEmpById", empno);

        return emp;
    }

//    需求:查询所有的员工信息
    public List<HashMap> getAll(){
        return BatisMapper.getSqlSession().selectList("test.getAll");
    }

//    需求:根据员工编号删除员工信息
    public void deletEmpById(int empno){
        SqlSession sqlSession = BatisMapper.getSqlSession();
        sqlSession.delete("test.deletEmpById",empno);
        sqlSession.commit();
    }

//    需要:查询员工工资大于指定工资的人数
    public Integer getNumBySalary(int salary){
        SqlSession sqlSession = BatisMapper.getSqlSession();
        Integer integer = sqlSession.selectOne("test.getNumBySalary", salary);
        return integer;
    }
}

写sql语句

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!--    所有的sql语句都必须写在这个标签内部,
        名称空间。接口的全路径,要求唯一
-->
<mapper namespace="test">

<!--    mybatis 为每一种操作都创建一个标签-->
<!--    id 给这个标签起一个名字-,要求唯一,一般情况下这个id都是接口中的方法名
        parameterType:输入参数类型,sql中参数的数据类型,可以省略
        resultType:输出参数类型,结果集的封装类型,必须存在,不可省略
-->
<!--    需求:根据员工编号查询员工信息-->
    <select id="getEmpById" parameterType="int" resultType="com.sky.pojo.Emp">
    select * from emp where empno = #{empno}
  </select>
<!--    需求:查询所有的员工信息-->
    <select id="getAll" resultType="HashMap">
        select * from emp LEFT JOIN dept on emp.deptno = dept.deptno
    </select>
<!--    需求:根据员工编号删除员工信息-->
    <delete id="deletEmpById" parameterType="int">
        DELETE FROM emp WHERE empno = #{empno}
    </delete>
<!--    需要:查询员工工资大于指定工资的人数-->
    <select id="getNumBySalary" parameterType="int" resultType="int">
        SELECT COUNT(empno) FROM emp WHERE salary &gt; #{salary}
    </select>
</mapper>

mybatis配置

<?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">
<!--    dtd 约束 , 限制了这个文件里的标签使用-->
<!--    配置文件的内容-->
<configuration>

<!--    环境配置    支持多环境配置 , 开发环境,测试环境,生成环境-->
    <environments default="development">
        <environment id="development">
<!--            事务管理器-->
            <transactionManager type="JDBC"/>
<!--            数据源,驱动,用户名,密码,链接-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql:///kg16"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
<!--    映射文件,写sql语句的文件,必须将所有的映射文件全部引进来-->
    <mappers>
        <mapper resource="com/sky/mapperxml/EmpMapper.xml"/>
    </mappers>
</configuration>

测试,junit 测试

package com.sky.service;

import com.sky.mapper.EmpMapper;
import com.sky.pojo.Emp;
import org.junit.Test;

import java.io.IOException;
import java.util.HashMap;
import java.util.List;

public class EmpService {
    public static void main(String[] args) throws IOException {
        EmpMapper empMapper = new EmpMapper();
        Emp emp = empMapper.getEmpById(8);
        System.out.println(emp);
        List<HashMap> all = empMapper.getAll();
        System.out.print(all);
        empMapper.deletEmpById(9);

    }

//    单元测试。junit 测试
//    基于方法的测试
//    1、引入依赖
//    2、写测试方法:方法不能有返回值,不能有参数,不能用Test作为方法名,一般方法名和测试的方法名一样
//    3、使用Test注解运行方法
    @Test
    public void getEmpById() throws IOException {
        EmpMapper empMapper = new EmpMapper();
        Emp emp = empMapper.getEmpById(8);
        System.out.println(emp);
    }

    @Test
    public void getNumBySalary() throws IOException {
        EmpMapper empMapper = new EmpMapper();
        int i = empMapper.getNumBySalary(8000);
        System.out.println(i);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值