mybatis初识

MyBatis概述

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。

iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)

Mybatis的功能:

  1. 注册数据库的驱动,例如 Class.forName(“com.mysql.jdbc.Driver”))
  2. 创建 JDBC 中必须使用的 Connection , Statement, ResultSet 对象
  3. 从 xml 中获取 sql,并执行 sql 语句,把 ResultSet 结果转换 java 对象
  4. 关闭资源

总结:

MyBatis是一个优秀的持久层框架。它对jdbc几乎所有的数据库操作进行了封装(包括加载驱动、创建connection、创建statement、手动设置参数、结果集检索等繁琐操作),使开发者只需要关注 SQL本身。

MyBatis快速入门

下载MyBatis,直接在github上搜索即可。

MyBatis中文文档:https://mybatis.org/mybatis-3/zh/getting-started.html

解压mybatis压缩包后:

mybatis初识_第1张图片

MyBatis框架搭建

在普通web项目中的搭建

直接在lib目录下导入:mybatis相关jar包、mysql驱动包、log4j相关jar包。

例如:mybatis-3.4.5.jar、mysql-connector-java-5.1.23-bin.jar、log4j-1.2.17.jar

在maven项目中的搭建

  1. 创建maven项目

  2. 在pom.xml文件中加入依赖

    <dependencies>
        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <version>4.11version>
            <scope>testscope>
        dependency>
        
        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatisartifactId>
            <version>3.5.1version>
        dependency>
         
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>5.1.9version>
        dependency>
    dependencies>
    
  3. 提前创建一个数据库

    例如:test1数据库中有account表,包含字段有id int 、name varchar(20)、money double。

  4. 编写一个domain/entity实体类:Account实体类

    package com.maj.domain;
    
    public class Account {
           
        private Integer id;
        private String name;
        private Double money;
        // 后面省略
    }
    
  5. 编写创建一个持久层的Dao接口 AccountDao

    package com.maj.dao;
    
    import com.maj.domain.Account;
    import java.util.List;
    
    // 接口操作account表
    public interface AccountDao {
           
    
        // 查询account表中所有数据
        public abstract List<Account> showAccount();
    
    }
    
  6. 创建一个sql映射文件,xml文件

    sql映射文件:是用来写sql语句的,一般一个表对应一个sql映射文件

    创建的位置:应该与dao接口所在位置一致,且其名称也应该一样

    
    
    
    
    
    
    <mapper namespace="com.maj.dao.AccountDao">
        
        <select id="showAccount" resultType="com.maj.domain.Account">
            select id,name,money from account order by id;
      select>
    mapper>
    
  7. 创建一个mybatis主配置文件,xml文件

    用处:主要用于定义数据库配置信息(类似于连接数据库),sql映射文件的位置

    位置:放在maven工程中resources目录下

    命名:可以自定义,一般是mybatis.xml

    
    
    <configuration>  
        
        
        <environments default="mydev">
            
            <environment id="mydev">
                
                <transactionManager type="JDBC"/>
                
                <dataSource type="POOLED">
                    
                    
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql://localhost:3306/test1"/>
                    <property name="username" value="root"/>
                    <property name="password" value="maj6226543"/>
                dataSource>
            environment>
        environments>
        
        <mappers>
            
            
            <mapper resource="com/maj/dao/AccountDao.xml"/>
        mappers>
    configuration>
    
  8. 测试用例

    package com.maj;
    
    import com.maj.domain.Account;
    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 org.junit.Test;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.List;
    
    
    public class MyBatisTest {
           
        @Test
        public void test1() throws IOException {
           
            // 1.定义mybatis主配置文件名称,从类路径的根开始(classes/后面)
            String config = "mybatis.xml";
            // 2.读取配置文件
            InputStream in = Resources.getResourceAsStream(config);
            // 3.创建SqlSessionFactory对象,目的是获取SqlSession
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
            // 4.获取SqlSession(因为SqlSession能够执行SQL语句)***
            SqlSession session = factory.openSession();
            // 5.执行SqlSession的selectList()  ***
            // 参数是 映射文件的namespace值 + "." + ql语句的id
            List<Account> accountList = session.selectList("com.maj.dao.AccountDao.showAccount");
            // 6.输出结果
            accountList.forEach(System.out::println);
            // 7.释放资源
            session.close();
        }
    }
    

    补充:可以配置日志功能

    • mybatis.xml 文件加入日志配置,可以在控制台输出执行的 sql 语句和参数

    • <settings>
              <setting name="logImpl" value="STDOUT_LOGGING"/>
      settings>
      

你可能感兴趣的:(mybatis,mybatis,数据库,java)