1. 程式人生 > 其它 >Mybatis知識小結(一)

Mybatis知識小結(一)

一、簡介

  1. mybatis是一個基於Java持久層的框架,內部封裝JDBC使開發者只需關注SQL語句本身,而不需要花費時間去處理建立JDBC的繁瑣過程。

  2. 快速入門:

    • 匯入相關jar包

      <!--mybatis相關-->
      <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>
    • 配置核心檔案:sqlMapperConfig.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>
      <!--載入properties檔案-->
      <properties resource="jdbc.properties"/>

      <!--定義實體別名-->
      <typeAliases>
      <package name="com.nanychuan.domin"/>
      </typeAliases>

      <!--配置環境-->
      <environments default="development">
      <environment id="development">
      <transactionManager type="jdbc"></transactionManager>
      <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>

      <!--載入對映檔案-->
      <mappers>
      <package name="com.nanychuan.mapper"/>
      </mappers>
      </configuration>
    • 配置對映檔案

      <?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">
      <mapper namespace="com.itheima.mapper.AccountMapper">
      <insert id="save" parameterType="account">
      insert into account values (#{id},#{name},#{money})
      </insert>

      <select id="findAll" parameterType="list" resultType="account">
      select * from account
      </select>
      </mapper>
    • mapper 層:

      package com.nanychuan.mapper;

      import com.nanychuan.domin.Account;

      import java.util.List;

      /**
      * @author 往
      * save方法
      * findAll()方法
      */
      public interface AccountMapper {
      public void save(Account account);

      public List<Account> findAll();
      }
    • MapperTest

      package com.nanychuan;

      import com.itheima.domin.Account;
      import com.itheima.mapper.AccountMapper;
      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 MapperTest {
      @Test
      public void test1(){
      try {
      InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapperConfig.xml");
      SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
      SqlSession sqlSession = sqlSessionFactory.openSession();
      AccountMapper mapper = sqlSession.getMapper(AccountMapper.class);
      List<Account> accountList = mapper.findAll();
      for (Account account : accountList) {
      System.out.println(account);
      }
      sqlSession.close();
      } catch (IOException e) {
      e.printStackTrace();
      }
      }
      }
    • 控制檯輸出:

      Account{id=1, name='張三', money=10000.0} Account{id=2, name='張三', money=10000.0} Account{id=3, name='張三', money=10000.0}

  3. 註解實現:

    • mapper層:

      package com.itheima.mapper;

      import com.itheima.domin.Account;
      import org.apache.ibatis.annotations.Insert;
      import org.apache.ibatis.annotations.Select;

      import java.util.List;

      /**
      * @author 往
      * save方法
      * findAll()方法
      */
      public interface AccountMapper {
      @Insert("insert into account values(#{id},#{name},#{money})")
      public void save(Account account);

      @Select("select * from account")
      List<Account> findAll();
      }
    • 對映檔案:

      <?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">
      <mapper namespace="com.nanychuan.mapper.AccountMapper">
      </mapper>
  4. 相比傳統的jdbc操作,mybatis不用經歷載入驅動、建立連線、建立statement等過程就能對資料庫進行持久化操作,這極大的提高了開發效率。