Mybatis的學習.

  • 一.配置mybatis.cfg.xml(在此之前需要首先配置好log4j的配置文件)
    : 1.在外部編寫文件
    (1).driver需要用com.mysql.cj.jdbc.Driver
    (2).url配置上需要注意一下,有data類型,不讓通過,需要在url後面添加serverTimezone=UTC或者GMT%2B8
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-8&serverTimezone=
jdbc.username=...
jdbc.password=...

: 2.

<?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="mysql.properties"></properties>

  <!-- 配置mybatis運行環境 -->
  <environments default="cybatis">
      <environment id="cybatis">
          <!-- type="JDBC" 代表使用JDBC的提交和回滾來管理事務 -->
          <transactionManager type="JDBC" />

          <!-- mybatis提供了3種數據源類型,分別是:POOLED,UNPOOLED,JNDI -->
          <!-- POOLED 表示支持JDBC數據源連接池 -->
          <!-- UNPOOLED 表示不支持數據源連接池 -->
          <!-- JNDI 表示支持外部數據源連接池 -->
          <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>
      <mapper resource="Usermapper.xml"/>
  </mappers>
</configuration>

: 3.映射文件Usermapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="test">
   <select id="findUserById" parameterType="int" resultType="DAO.User">
       SELECT * from t_user where id=#{id};
   </select>
</mapper>

: 4.測試類

public class MybatisFirst {
  private String resource="mybatis.cfg.xml";

  @Test
  public void findUserByIdTest() throws IOException {
      InputStream inputStream = Resources.getResourceAsStream(resource);
//       創建會話工廠
      SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//        使用會話工廠新建sqlsession,然後使用他來進行數據庫的操作.
      SqlSession sqlSession = sqlSessionFactory.openSession();
      User user= sqlSession.selectOne("test.findUserById",2);
      System.out.println(user);
      sqlSession.close();
  }
}

: 5.總結
大概流程就是

1.配置log4j
2.配置mybatis的總配置文件,使連接上數據庫
3.配置映射文件,在裏面填寫調用mysql的語句.
4.新建一個類,使用Mybatis連接到mysql>
  	InputStream inputStream = Resources.getResourceAsStream("配置文件地址");
方法連接到mybatis,然後創建會話工廠>
  	SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
使用會話工廠創建會話>
  	  SqlSession sqlSession = sqlSessionFactory.openSession();
使用會話操作數據庫,調用的是映射文件Usermapper裏的(命名空間.id的sql語句,並傳入參數.)
  	  User user= sqlSession.selectOne("test.findUserById",2);
關閉會話>
      sqlSession.close();

以上結束之後,記錄一下使用Mybatis自動生成daoimpl進行開發的開發規範,基本上按照這個來就行了.

  1. Mapper.xml中的namespace等於mapper的接口地址,即等於原始dao接口的地址.
  2. mapper接口中的方法名,輸入類型,和輸出類型都要和mapper.xml文件中的語句id,輸入類型和輸出類型一致.
  3. 仍然需要在mybaits裏面的mappers裏面配置好這個mapper,因爲上述兩步只是建立起了mapper.xml和dao接口之間的關係,還是需要註冊到sqlmapconfig裏面…

接下來就是Mybatis和SpringMVC進行整合的時候,使用mapper代理進行開發,也就是不寫daoimpl進行開發的過程.
如果使用原始的DaoImpl進行開發,那麼就需要DaoImpl類繼承sqlsessionfactorysupport類然後加載sqlsessionfactory
若使用mapper代理方法:

  1. 規範和上述一致.
  2. MapperFactoryBean註冊到springmvc.
  3. 使用MapperFactoryBean進行註冊,不建議使用這種方法,因爲每寫一個mapper文件就需要配一個這個. 單個文件配置
  4. 建立一個文件夾專門用來放置mapper.xml文件和mapper.java文件,然後使用mapperscannerconfigurer來進行掃描配置,這裏需要注意的是如果這樣配置需要把mapper文件和java文件放置在同一目錄下面,在此基礎上遵循上面所寫的那兩條規範才能正確使用.
    多個一起配置
  5. 很好奇有沒有不放置在同一文件夾下的方法呢?百度上有,不過我沒做測試,照做之下應該是可以的.百度 方法
  6. 上面配置完成之後,就可以直接在service層裏面使用@autowired進行裝配了.裝配的時候寫接口類就可以了.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章