如果在網速不穩定的情況下,下載包很有可能失敗,可以試試強制項目重新下載;可以使用下載工具將jar包下載后手復制到本地資源庫中。
2.2、準備數據
打開MySQL數據庫,創建一個表,這里以booktypes表為例。
sql腳本如下:
/* Navicat MySQL Data Transfer Source Server : localhost Source Server Version : 50536 Source Host : localhost:3306 Source Database : db2 Target Server Type : MYSQL Target Server Version : 50536 File Encoding : 65001 Date: 2016-07-04 10:49:56 */ SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for `booktypes` -- ---------------------------- DROP TABLE IF EXISTS `booktypes`; CREATE TABLE `booktypes` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '類型編號', `typeName` varchar(100) NOT NULL COMMENT '類型名稱', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=94 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of booktypes -- ---------------------------- INSERT INTO `booktypes` VALUES ('1', '計算機軟件開發'); INSERT INTO `booktypes` VALUES ('2', '計算機網絡工程'); INSERT INTO `booktypes` VALUES ('3', '神話小說'); INSERT INTO `booktypes` VALUES ('4', '科幻小說'); INSERT INTO `booktypes` VALUES ('5', '外語'); INSERT INTO `booktypes` VALUES ('6', '測試類型'); INSERT INTO `booktypes` VALUES ('7', '91'); INSERT INTO `booktypes` VALUES ('8', '92'); INSERT INTO `booktypes` VALUES ('9', '93'); INSERT INTO `booktypes` VALUES ('91', '建筑設計'); INSERT INTO `booktypes` VALUES ('92', '工業設計'); INSERT INTO `booktypes` VALUES ('93', '船舶制造');
2.3、創建java Bean
在包com.zhangguo.Spring61.entities下添加類BookType類型。
package com.zhangguo.Spring61.entities; /** * 圖書類型 * */ public class BookType { /** * 編號 */ private int id; /** * 類型名 */ private String typeName; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getTypeName() { return typeName; } public void setTypeName(String typeName) { this.typeName = typeName; } @Override public String toString() { return this.getId()+"\t"+this.getTypeName(); } }
2.4、創建實例與表的映射文件
這里用接口+XML的形式完成,BookType數據訪問接口如下:
package com.zhangguo.Spring61.mapping; import java.util.List; import com.zhangguo.Spring61.entities.BookType; /** * 圖書類型數據訪問接口 * */ public interface BookTypeDAO { /* * 獲得所有圖書類型 */ public List<BookType> getAllBookTypes(); }
BookTypeMapper.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.zhangguo.Spring61.mapping.BookTypeDAO"> <!--id應該是接口中的方法,結果類型如沒有配置別名則應該使用全名稱 --> <select id="getAllBookTypes" resultType="BookType"> select id,typeName from booktypes </select> </mapper>
2.5、創建MyBatisCfg.xml文件
MyBatisCfg.xml文件用于配置MyBatis的運行環境,內容如下:
<?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="db.properties"></properties> <!--類型別名,默認引入com.zhangguo.Spring61.entities下的所有類 --> <typeAliases> <package name="com.zhangguo.Spring61.entities"/> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="${driver}" /> <property name="url" value="${url}" /> <property name="username" value="${username}" /> <property name="password" value="${password}" /> </dataSource> </environment> </environments> <mappers> <!--引入映射文件 --> <mapper resource="com/zhangguo/Spring61/mapping/BookTypeMapper.xml" /> </mappers> </configuration>
因為配置中依賴了db.properties文件,該文件用于指定數據庫的連接信息,內容如下:
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/db2 username=root password=root
2.6、實現數據訪問功能
為了更加方便的復用MyBatis實現數據訪問不需要頻繁的創建SQLSessionFactory和SQLSession對象,封裝一個MyBatisUtil工具類如下:
package com.zhangguo.Spring61.dao; import java.io.InputStream; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public abstract class MyBatisUtil { //GC不理static private static SqlSessionFactory factory=null; public static SqlSessionFactory getSqlSessionFactory(){ if(factory==null){ // 獲得環境配置文件流 InputStream config = MyBatisUtil.class.getClassLoader().getResourceAsStream("MyBatisCfg.xml"); // 創建sql會話工廠 factory = new SqlSessionFactoryBuilder().build(config); } return factory; } //獲得會話 public static SqlSession getSession(){ return getSqlSessionFactory().openSession(true); } /** * 獲得得sql會話 * @param isAutoCommit 是否自動提交,如果為false則需要sqlSession.commit();rollback(); * @return sql會話 */ public static SqlSession getSession(boolean isAutoCommit){ return getSqlSessionFactory().openSession(isAutoCommit); } }