MyBatis入门

TobeboldIP属地: 广东
0.066字数 485

1. 基本概念

  • 基于JAVA的持久层框架
  • 封装了JDBC操作的很多细节
  • 使用了ORM思想实现结果集封装
  • ORM(Object Relational Mapping):对象映射关系

2. 环境搭建

  • 2.1 创建maven工程并导入坐标
    在工程的pom.xml中做如下配置
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>org.example</groupId>
      <artifactId>DemoMaven01</artifactId>
      <version>1.0-SNAPSHOT</version>
      <packaging>jar</packaging>
    
      <dependencies>
          <dependency>
              <groupId>org.mybatis</groupId>
              <artifactId>mybatis</artifactId>
              <version>3.4.5</version>
          </dependency>
          <dependency>
              <groupId>mysql</groupId>
              <artifactId>mysql-connector-java</artifactId>
              <version>5.1.6</version>
          </dependency>
          <dependency>
              <groupId>log4j</groupId>
              <artifactId>log4j</artifactId>
              <version>1.2.12</version>
          </dependency>
          <dependency>
              <groupId>junit</groupId>
              <artifactId>junit</artifactId>
              <version>4.10</version>
              <scope>test</scope>
          </dependency>
      </dependencies>
    </project>
    
  • 2.2 创建实体类和dao的接口
    实体类中的类名及属性严格对于数据表
  • 2.3 创建Mybatis的主配置文件
    在resource文件夹中创建配置的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>
      <environments default="mysql">
          <environment id="mysql">
              <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="${username}"/>
                  <property name="password" value="${password}"/>
              </dataSource>
          </environment>
      </environments>
      <mappers>
          <mapper resource="org/mybatis/example/BlogMapper.xml"/>
      </mappers>
    </configuration>
    
  • 2.4 创建映射配置文件
    配置文件的文件位置必须和dao接口的包结构相同
    配置文件的Mapper标签namespace属性值必须为dao接口的全限定类名
    映射配置文件的操作配置其id属性取值必须是dao接口的方法名

3. 注解配置

使用注解配置模式时可以免去映射配置文件的工作量,书写更为方便。
其中SqlMapConfig的配置信息改为

<?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>
    <!-- 引入外部配置文件 -->
    <properties resource="jdbcConfig.properties"></properties>
    <!-- 配置别名 -->
    <typeAliases>
        <package name="com.handsomexu.mybatis"/>
    </typeAliases>
    <!-- 配置环境 -->
    <environments default="mysql">
        <environment id="mysql">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    <!-- 指定带有注解的dao接口所在位置 -->
    <mappers>
        <package name="com.handsomexu.dao"/>
    </mappers>
</configuration>

定义dao层接口时采用注解配置

package com.handsomexu.dao;

import com.handsomexu.mybatis.Test1;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.SelectKey;

import java.util.List;

/**
 * 在mybatis中争对crud一共有四个注解为:@Select @Insert @Update @Delete
 */
public interface ITest1 {

    @Select("select * from test1")
    List<Test1> findAll();

    @Insert("insert into test1(username,password) values(#{username},#{password})")
    void insertUser(Test1 test1);
}

最后可在test文件中进行数据库的访问

package com.handsomxu.test;


import com.handsomexu.dao.ITest1;
import com.handsomexu.mybatis.Test1;
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.After;
import org.junit.Before;
import org.junit.Test;

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

public class MybatisTest {
    private InputStream in;
    private SqlSessionFactory factory;
    private SqlSession session;
    private ITest1 test1Dao;

    @Before
    public void init() throws IOException {
        //1.读取配置文件
        in = Resources.getResourceAsStream("SqlMapConfig.xml");
        //2.创建SqlSessionFactory工厂,其为接口 不能new
        factory = new SqlSessionFactoryBuilder().build(in);
        //3.使用工厂生产SqlSession对象
        session = factory.openSession();
        //4.使用SqlSession创建Dao接口代理对象
        test1Dao = session.getMapper(ITest1.class);
    }

    @After
    public void destroy() throws IOException {
        //6.释放资源
        session.commit();
        session.close();
        in.close();
    }

    @Test
    public void testSelectUser() {
        //5.使用代理对象执行方法
        List<Test1> test1s = test1Dao.findAll();
        for(Test1 test1:test1s){
            System.out.println(test1);
        }
    }

    @Test
    public void testInsertUser(){
        Test1 user = new Test1();
        user.setUsername("wangchen");
        user.setPassword("123456");

        test1Dao.insertUser(user);
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
1人点赞
总资产0.873共写了5171字获得8个赞共1个粉丝