MyBatis的使用(一):简介与基本使用

简介

    MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

配置与使用

  1. 引入相应的jar包 mybatis基本包,mysql驱动包,log4j日志包
  2. 建立dao层,dao层需要一个接口文件和一个xml文件,接口文件的文件名要和xml文件名一模一样
  3. 建立mybatis的配置文件
    a.配置数据源 详情请看xml文件
    b.配置dao层的xml文件
  4. 在dao层写接口,写响应的sql调用的方法
  5. 测试sql语句

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>

    <!--相关的设置-->
    <settings>
        <!--mybatis log4j的日志 -->
        <setting name="logImpl" value="LOG4J" />
    </settings>

    <!--所有的数据源
        default指定默认的数据源 填入数据源的ID
    -->
    <environments default="mysqlDataSource">
        <!--单个数据源-->
        <environment id="mysqlDataSource">
            <!--事务类型  -->
            <transactionManager type="JDBC"></transactionManager>
            <!--数据连接池-->
            <dataSource type="POOLED">
                <!--数据源的4个配置 驱动,地址,用户名,密码-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/emp"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

    <!-- 注册dao层 -->
    <mappers>
        <!--单个注册dao分为 源代码注册和资源文件(xml)注册-->
        <mapper class="com.dao.IEmpDao"></mapper>
        <!--<mapper resource="com/dao/IEmpDao.xml"></mapper>-->
    </mappers>
</configuration>
public interface IEmpDao {
    /*查询所有的Emp*/
    public List<Emp>  findAllEmp();

    //根据ID查询人员
    public Emp findByID(int empno);
}

IEmpDao.xml

<?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">
<!-- 指定当前配置文件的接口文件 namespace来指定 全路径-->
<mapper namespace="com.igeek.dao.IEmpDao">

    <!--指定我的sql语句
        id 代码接口中方法名
        resultType 返回值的类型(泛型)
        parameterType  参数类型
    -->
    <select id="findAllEmp" resultType="com.entity.Emp">
        select  * from  emp
    </select>
    
    <select id="findByID" resultType="com.entity.Emp" parameterType="int">
        select  * from emp where empno = #{empno}
    </select>

</mapper>
public class MybatisUtil {
    public static SqlSession getSession(){
        //1.加载mybatis的配置文件
        //mybatis提供了读取配置文件输入流的工具类
        InputStream is = null;
        try {
            is = Resources.getResourceAsStream("mybatis-config.xml");
        } catch (IOException e) {
            e.printStackTrace();
        }
        //2.SqlSessionFactory mybatis的工厂类
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
        //3.SqlSession mybatis查询组件(类似于原本JDBC连接)
        SqlSession sqlSession =factory.openSession();
        return sqlSession;
    }
}
public class TestMybatis {
    @Test
    public void test1() throws IOException {
        //1.加载mybatis的配置文件
        //mybatis提供了读取配置文件输入流的工具类
        //InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
        //2.SqlSessionFactory mybatis的工厂类
        //SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
        //3.SqlSession mybatis查询组件(类似于原本JDBC连接)
        //SqlSession sqlSession =factory.openSession();
        //4.sqlSession动态生成dao层接口的实现类
        //  a.接口和xml文件一定要同名
        //  b.接口和xml文件一定要放在同一层目录
        //  c.一定要在mybatis的配置文件中注册这个dao

        //通过工具类得到sqlSession
        SqlSession sqlSession = MybatisUtil.getSession();
        //5.得到实现类
        IEmpDao dao = sqlSession.getMapper(IEmpDao.class);
        List<Emp> emps = dao.findAllEmp();
        System.out.println(emps);
        IEmpDao dao = sqlSession.getMapper(IEmpDao.class);
        Emp emp = dao.findByID(7654);
        System.out.println(emp);
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章