- 一.配置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進行開發的開發規範,基本上按照這個來就行了.
- Mapper.xml中的namespace等於mapper的接口地址,即等於原始dao接口的地址.
- mapper接口中的方法名,輸入類型,和輸出類型都要和mapper.xml文件中的語句id,輸入類型和輸出類型一致.
- 仍然需要在mybaits裏面的mappers裏面配置好這個mapper,因爲上述兩步只是建立起了mapper.xml和dao接口之間的關係,還是需要註冊到sqlmapconfig裏面…
接下來就是Mybatis和SpringMVC進行整合的時候,使用mapper代理進行開發,也就是不寫daoimpl進行開發的過程.
如果使用原始的DaoImpl進行開發,那麼就需要DaoImpl類繼承sqlsessionfactorysupport類然後加載sqlsessionfactory
若使用mapper代理方法:
- 規範和上述一致.
- MapperFactoryBean註冊到springmvc.
- 使用MapperFactoryBean進行註冊,不建議使用這種方法,因爲每寫一個mapper文件就需要配一個這個.
- 建立一個文件夾專門用來放置mapper.xml文件和mapper.java文件,然後使用
mapperscannerconfigurer
來進行掃描配置,這裏需要注意的是如果這樣配置需要把mapper文件和java文件放置在同一目錄下面,在此基礎上遵循上面所寫的那兩條規範才能正確使用.
- 很好奇有沒有不放置在同一文件夾下的方法呢?百度上有,不過我沒做測試,照做之下應該是可以的.百度 方法
- 上面配置完成之後,就可以直接在service層裏面使用@autowired進行裝配了.裝配的時候寫接口類就可以了.