如何學習mybatis


最近幾天學習了mybatis框架,我是mybatis視頻學習的。看這篇文章,我建議首先要會熟練使用MVC架構,再學習這個框架。

在我們寫傳統的MVC模式寫Bean,Dao,Servlet時,我們每次調用dao時,不一樣的sql語句,每次都要獲得連接對象,然后獲得PreparedStatement,然后通過Preparedstatement執行編寫的sql語句。每次來個service每次都要寫這寫,有沒有感覺很繁瑣?

mybatis框架呢,主要就是對dao層的封裝,只要關注sql語句,然后我在dao層寫一個方法,web程序能夠知道要執行哪個sql語句,這時候是不是需要映射?映射這個概念,在框架的學習中至關重要。

 

mybatis的映射非常方便,但是它的底層是怎樣實現的呢?我強烈建議先自己寫一寫mybatis的底層,就是不用mapper代理(其實就是dao接口),自己寫dao接口。我這里就是來演示自己寫底層的dao接口。

mybatis的底層原理是:首先在配置文件xml中配置連接數據庫的一些連接池,連接數據庫的參數。然后在程序中加載xml配置文件,創建SqlSessionFactory,通過SqlSessionFactory創建SqlSession,然后

SqlSession封裝了很多操作數據庫的方法。

首先創建web項目,建一個bean,建好數據庫,建一個dao的接口,

寫完接口了,就要引入jar包了

這里采用的是junit測試,模擬測試,模擬請求

 

接下來就是來配置xml了,配置一個mybatis必須的是一個配置連接池的xml,這里叫SqlMapConfig.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="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <!-- 配置數據庫連接信息 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/exam" />
                <property name="username" value="root" />
                <property name="password" value="123" />
            </dataSource>
        </environment>
    </environments>
   <!--  配置映射文件地址 -->
    <mappers>
    	<mapper resource="UserMapper.xml"/>
    </mappers>
</configuration>

 整個項目結構如下

 

 

然后就是配置UserMapper.xml了,內容如下,這里的namespace是一種管理方式,到時候在測試代碼,底層就會用到

<?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="test">
	<select id="login" parameterType="com.cidp.edu.po.User"
		resultType="com.cidp.edu.po.User">
		select * from books where id=#{id} and username=#{username}
	</select>
</mapper>

 

 

最后就是自己寫一個dao的接口的實現類

 

 最后就用junit來測試一下了

package com.cidp.edu.test;

import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import com.cidp.edu.bean.User;
import com.cidp.edu.dao.IUserMapper;
import com.cidp.edu.dao.UserMapperImpl;

public class MabatisTest {
	@Test
	public void myTest() throws Exception {
		
		//加載源文件,路徑很關鍵,我建的config目錄和src是並列的,所以直接就訪問了,不需要
		//config/SqlMapConfig.xml,可以去看下tomcat下文件的目錄結構
		//classpath目錄,就是部署到tomcat下項目WEB-INF下面classes下的目錄是classpath下
		//而這樣建會神奇的發現,這兩個配置文件都是和classpath並列的。
		String resource = "SqlMapConfig.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		IUserMapper userMapper = new UserMapperImpl(sqlSessionFactory);
		User user = new User();
		user.setId(4);
		user.setUsername("wangwu");
		User selectUser = userMapper.mylogin(user);
		if(selectUser==null) {
			System.out.println("登錄失敗");
		}else {
			System.out.println("登錄成功");
		}
	}
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM