MyBatis 3.× 的簡單配置
阿新 • • 發佈:2019-01-06
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