1. 程式人生 > >MyBatis 3.× 的簡單配置

MyBatis 3.× 的簡單配置

iBatis改名成為MyBatis,用法也改變了不少,iBatis 到 MyBatis區別 請閱讀一大神寫的部落格:http://blog.csdn.net/laixiaonian/article/details/7222855

下面簡單的說說MyBatis的配置:

下載Mybatis和mysql的jar包:

給myeclipse新增MyBatis提示資訊:下載mybatis-3-config.dtd,下載地址:http://download.csdn.net/detail/wuleihenbang/6611591,然後找到window->preference->Myeclipse Enterprise->Files and Editors->XML->XML catalog->User Specified Entries->add,key Type 選擇URL,Key填寫-//mybatis.org//DTD Config 3.0//EN,OK。

工程目錄:


1.資料庫配置:

用mysql建立如下圖資料庫test,建立表user


2. 全域性配置檔案:Configuration.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="demo">
		<environment id="demo">
			<transactionManager type="JDBC"/>
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver"/>
				<property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull" />  
			    <property name="username" value="root" />  
			    <property name="password" value="" />  
			</dataSource>
		</environment>
	</environments>

	<mappers>
		<mapper resource="com/mybatis/config/UserDaoMapper.xml"/>
	</mappers>

</configuration>

通過以上的配置資訊,MyBatis能夠和資料庫建立連線,並應用給定的連線池資訊和事務屬性。MyBatis封裝了這些操作,最終暴露一個SqlSessionFactory例項供開發者使用,從名字可以看出來,這是一個建立SqlSesson的工廠類,通過SqlSession例項,開發者能夠直接進行業務邏輯的操作,而不需要重複編寫JDBC相關的程式碼。

一些標記的意義如下:

  • properties --- 用於提供一系列的鍵值對組成的屬性資訊,該屬性資訊可以用於整個配置檔案中。
  • settings --- 用於設定 MyBatis 的執行時方式,比如是否啟用延遲載入等。
  • typeAliases --- 為 Java 型別指定別名,可以在 XML 檔案中用別名取代 Java 類的全限定名。
  • typeHandlers --- 在 MyBatis 通過 PreparedStatement 為佔位符設定值,或者從 ResultSet 取出值時,特定型別的型別處理器會被執行。
  • objectFactory --- MyBatis 通過 ObjectFactory 來建立結果物件。可以通過繼承 DefaultObjectFactory 來實現自己的 ObjectFactory 類。
  • plugins --- 用於配置一系列攔截器,用於攔截對映 SQL 語句的執行。可以通過實現 Interceptor 介面來實現自己的攔截器。
  • environments --- 用於配置資料來源資訊,包括連線池、事務屬性等。
  • mappers --- 程式中所有用到的 SQL 對映檔案都在這裡列出,這些對映 SQL 都被 MyBatis 管理。

3.建立實體類User.java:

package com.mybatis.config;

public class User {
    private int userId;
    private String userName;
    private String password;
    private String comment;
    public int getUserId() {
        return userId;
    }
    public void setUserId(int userId) {
        this.userId = userId;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getComment() {
        return comment;
    }
    public void setComment(String comment) {
        this.comment = comment;
    }
}

4.定義資料訪問介面類UserDao.java:
package com.mybatis.config;
import java.util.List;

public interface UserDao {
    
    public int insert(User user);
    
    public int update(User user);
    
    public int delete(String userName);
    
    public List<User> selectAll();
    
    public int countAll();
    
    public User findByUserName(String userName);
}
5.建立MyBatis對映檔案UserDaoMapper.xml:
<?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.mybatis.config.UserDao">
    <select id="countAll" resultType="int">
        select count(*) c from user;
    </select>
    
    <select id="selectAll" resultType="com.mybatis.config.User">
        select * from user order by userName asc
    </select>
    
    <insert id="insert" parameterType="com.mybatis.config.User">
        insert into user(userName,password,comment) values(#{userName},#{password},#{comment})
    </insert>
    
    <update id="update" parameterType="com.mybatis.config.User">
        update user set userName=#{userName},password=#{password},comment=#{comment} where userName=#{userName}
    </update>
    
    <delete id="delete" parameterType="int">
        delete from user where userName=#{userName}
    </delete>
    
    <select id="findByUserName" parameterType="String" resultType="com.mybatis.config.User">
        select * from user where userName=#{userName}
    </select>
</mapper>
6.測試程式碼:
package test;
import java.io.*;
import java.sql.SQLException;
import java.util.List;

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 com.mybatis.config.User;
import com.mybatis.config.UserDao;

public class IBatisDemo {
	
	public static void main(String[] args) throws IOException, SQLException {
		String resource = "Configuration.xml";
		Reader reader = Resources.getResourceAsReader(resource);
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
		
		SqlSession session = sqlSessionFactory.openSession();
		
		UserDao userDao = session.getMapper(UserDao.class);
		
		User user = new User();
		user.setUserName("wuleieee");
		user.setPassword("123");
		user.setComment("備註");
		
		userDao.insert(user);
		System.out.println("記錄條數:"+userDao.countAll());
		
		session.commit();
		session.close();
	}
}
7.輸出結果:

參考文章:

1.http://blog.csdn.net/laixiaonian/article/details/7222855

2.http://www.cnblogs.com/wushiqi54719880/archive/2011/07/26/2117601.html

3.http://blog.csdn.net/gxftry1st/article/details/8601010