<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
MyBatis最初是Apache的一個開源專案iBatis, 2010年6月這個專案由Apache Software Foundation遷移到了Google Code。隨著開發團隊轉投Google Code旗下, iBatis3.x正式更名為MyBatis。程式碼於2013年11月遷移到Github。iBatis一詞來源於“internet”和“abatis”的組合,是一個基於Java的持久層框架。 iBatis提供的持久層框架包括SQL Maps和Data Access Objects(DAO)。
1) MyBatis 是支援客製化化 SQL、儲存過程以及高階對映的優秀的持久層框架
2) MyBatis 避免了幾乎所有的 JDBC 程式碼和手動設定引數以及獲取結果集
3) MyBatis可以使用簡單的XML或註解用於設定和原始對映,將介面和Java的POJO(Plain Old JavaObjects,普通的Java物件)對映成資料庫中的記錄
4) MyBatis 是一個 半自動的ORM(Object Relation Mapping)框架
MyBatis下載地址:https://github.com/mybatis/mybatis-3
IDE:idea 2019.2
構建工具:maven 3.5.4
MySQL版本:MySQL 5.7
MyBatis版本:MyBatis 3.5.7
MySQL 不同版本的注意事項
1 、驅動類 driver-class-name
MySQL 5 版本使用 jdbc5 驅動,驅動類使用: com.mysql.jdbc.Driver
MySQL 8 版本使用 jdbc8 驅動,驅動類使用: com.mysql.cj.jdbc.Driver
2 、連線地址 url
MySQL 5 版本的 url :
jdbc:mysql://localhost:3306/ssm
MySQL 8 版本的 url :
jdbc:mysql://localhost:3306/ssm?serverTimezone=UTC
否則執行測試用例報告如下錯誤:
java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or
represents more
a>打包方式:jar
b>引入依賴
<dependencies> <!-- Mybatis核心 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.7</version> </dependency> <!-- junit測試 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!-- MySQL驅動 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.3</version> </dependency> </dependencies>
習慣上命名為mybatis-config.xml,這個檔名僅僅只是建議,並非強制要求。將來整合Spring之後,這個組態檔可以省略,所以大家操作時可以直接複製、貼上。
核心組態檔主要用於設定連線資料庫的環境以及MyBatis的全域性設定資訊
核心組態檔存放的位置是src/main/resources目錄下
提示:
下面的 username 和 password 為mysql的賬號密碼 根據自身實際情況進行改寫
<?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/ssm? serverTimezone=UTC"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <!--引入對映檔案--> <mappers> <mapper resource="mappers/UserMapper.xml"/> </mappers> </configuration>
MyBatis中的mapper介面相當於以前的dao。但是區別在於,mapper僅僅是介面,我們不需要提供實現類。
先建立使用者類 類中屬性 與 資料庫中的欄位對應
User類裡面的程式碼:
public class User { private Integer id; private String username; private String password; private Integer age; private String sex; private String email; public User() { } public User(Integer id, String username, String password, Integer age, String sex, String email) { this.id = id; this.username = username; this.password = password; this.age = age; this.sex = sex; this.email = email; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } 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 Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } @Override public String toString() { return "User{" + "id=" + id + ", username='" + username + ''' + ", password='" + password + ''' + ", age=" + age + ", sex='" + sex + ''' + ", email='" + email + ''' + '}'; } }
建立UserMapper介面
public interface UserMapper { /*** 新增使用者資訊 */ int insertUser(); }
相關概念:ORM(Object Relationship Mapping)物件關係對映。
物件:Java的實體類物件
關係:關係型資料庫
對映:二者之間的對應關係
Java概念 | 資料庫概念 |
類 | 表 |
屬性 | 欄位/列 |
物件 | 記錄/行 |
1 、對映檔案的命名規則:
表所對應的實體類的類名 +Mapper.xml
例如:表 t_user ,對映的實體類為 User ,所對應的對映檔案為 UserMapper.xml
因此一個對映檔案對應一個實體類,對應一張表的操作
MyBatis 對映檔案用於編寫 SQL ,存取以及操作表中的資料
MyBatis 對映檔案存放的位置是 src/main/resources/mappers 目錄下
2 、 MyBatis 中可以面向介面運算元據,要保證兩個一致:
a>mapper 介面的全類名和對映檔案的名稱空間( namespace )保持一致
b>mapper 介面中方法的方法名和對映檔案中編寫 SQL 的標籤的 id 屬性保持一致
<?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.atguigu.mybatis.mapper.UserMapper"> <!--int insertUser();--> <insert id="insertUser"> insert into t_user values(null,'張三','123',23,'女') </insert> </mapper>
//讀取MyBatis的核心組態檔 InputStream is = Resources.getResourceAsStream("mybatis-config.xml"); //建立SqlSessionFactoryBuilder物件 SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); //通過核心組態檔所對應的位元組輸入流建立工廠類SqlSessionFactory,生產SqlSession物件 SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is); //建立SqlSession物件,此時通過SqlSession物件所操作的sql都必須手動提交或回滾事務 //SqlSession sqlSession = sqlSessionFactory.openSession(); //建立SqlSession物件,此時通過SqlSession物件所操作的sql都會自動提交 S qlSession sqlSession = sqlSessionFactory.openSession(true); //通過代理模式建立UserMapper介面的代理實現類物件 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); //呼叫UserMapper介面中的方法,就可以根據UserMapper的全類名匹配元素檔案,通過呼叫的方法名匹配 對映檔案中的SQL標籤,並執行標籤中的SQL語句 int result = userMapper.insertUser(); //sqlSession.commit();
a>加入依賴
<!-- log4j紀錄檔 --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>
b>加入log4j的組態檔
log4j的組態檔名為log4j.xml,存放的位置是src/main/resources目錄下
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> <param name="Encoding" value="UTF-8"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L) n"/> </layout> </appender> <logger name="java.sql"> <level value="debug"/> </logger> <logger name="org.apache.ibatis"> <level value="info"/> </logger> <root> <level value="debug"/> <appender-ref ref="STDOUT"/> </root> </log4j:configuration>
紀錄檔的級別
FATAL(致命)>ERROR(錯誤)>WARN(警告)>INFO(資訊)>DEBUG(偵錯)
從左到右列印的內容越來越詳細
到此這篇關於Java MyBatis框架環境搭建詳解的文章就介紹到這了,更多相關Java MyBatis框架內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45