日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql可以使用mybaties框架吗_搭建一个简单的mybatis框架

發(fā)布時間:2025/3/15 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql可以使用mybaties框架吗_搭建一个简单的mybatis框架 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、Mybatis介紹

MyBatis是一個支持普通SQL查詢,存儲過程和高級映射的優(yōu)秀持久層框架。MyBatis消除了幾乎所有的JDBC代碼和參數(shù)的手工設置以及對結果集的檢索封裝。MyBatis可以使用簡單的XML或注解用于配置和原始映射,將接口和Java的POJO(Plain Old Java Objects,普通的Java對象)映射成數(shù)據(jù)庫中的記錄。

1、Mybatis實現(xiàn)了接口綁定,使用更加方便。

在ibatis2.x中我們需要在DAO的實現(xiàn)類中指定具體對應哪個xml映射文件, 而Mybatis實現(xiàn)了DAO接口與xml映射文件的綁定,自動為我們生成接口的具體實現(xiàn),使用起來變得更加省事和方便。

2、對象關系映射的改進,效率更高

3、MyBatis采用功能強大的基于OGNL的表達式來消除其他元素。

對于IBatis與MyBatis的區(qū)別就不再多說了,感興趣的朋友可以研究一下

MyBatis的框架架構

看到Mybatis的框架圖,可以清晰的看到Mybatis的整體核心對象,我更喜歡用自己的圖來表達Mybatis的整個的執(zhí)行流程。如下圖所示:

原理詳解:

MyBatis應用程序根據(jù)XML配置文件創(chuàng)建SqlSessionFactory,SqlSessionFactory在根據(jù)配置,配置來源于兩個地方,一處是配置文件,一處是Java代碼的注解,獲取一個SqlSession。SqlSession包含了執(zhí)行sql所需要的所有方法,可以通過SqlSession實例直接運行映射的sql語句,完成對數(shù)據(jù)的增刪改查和事務提交等,用完之后關閉SqlSession。

MyBatis的優(yōu)缺點

優(yōu)點:

1、簡單易學

mybatis本身就很小且簡單。沒有任何第三方依賴,最簡單安裝只要兩個jar文件+配置幾個sql映射文件易于學習,易于使用,通過文檔和源代碼,可以比較完全的掌握它的設計思路和實現(xiàn)

2、靈活

mybatis不會對應用程序或者數(shù)據(jù)庫的現(xiàn)有設計強加任何影響。 sql寫在xml里,便于統(tǒng)一管理和優(yōu)化。通過sql基本上可以實現(xiàn)我們不使用數(shù)據(jù)訪問框架可以實現(xiàn)的所有功能,或許更多。

3、解除sql與程序代碼的耦合

通過提供DAL層,將業(yè)務邏輯和數(shù)據(jù)訪問邏輯分離,使系統(tǒng)的設計更清晰,更易維護,更易單元測試。sql和代碼的分離,提高了可維護性。

4、提供映射標簽,支持對象與數(shù)據(jù)庫的orm字段關系映射

5、提供對象關系映射標簽,支持對象關系組建維護

6、提供xml標簽,支持編寫動態(tài)sql。

缺點:

1、編寫SQL語句時工作量很大,尤其是字段多、關聯(lián)表多時,更是如此。

2、SQL語句依賴于數(shù)據(jù)庫,導致數(shù)據(jù)庫移植性差,不能更換數(shù)據(jù)庫。

3、框架還是比較簡陋,功能尚有缺失,雖然簡化了數(shù)據(jù)綁定代碼,但是整個底層數(shù)據(jù)庫查詢實際還是要自己寫的,工作量也比較大,而且不太容易適應快速數(shù)據(jù)庫修改。

4、二級緩存機制不佳

總結

mybatis的優(yōu)點同樣是mybatis的缺點,正因為mybatis使用簡單,數(shù)據(jù)的可靠性、完整性的瓶頸便更多依賴于程序員對sql的使用水平上了。sql寫在xml里,雖然方便了修改、優(yōu)化和統(tǒng)一瀏覽,但可讀性很低,調試也非常困難,也非常受限。

mybatis沒有hibernate那么強大,但是mybatis最大的優(yōu)點就是簡單小巧易于上手,方便瀏覽修改sql語句。

二、mybatis快速入門

2.1、準備開發(fā)環(huán)境

1、創(chuàng)建測試項目,普通java項目或者是JavaWeb項目均可,如下圖所示:

2、添加相應的jar包

【mybatis】

mybatis-3.1.1.jar

【MYSQL驅動包】

mysql-connector-java-5.1.7-bin.jar

3、創(chuàng)建數(shù)據(jù)庫和表,針對MySQL數(shù)據(jù)庫

SQL腳本如下:

1 create database mybatis;

2 use mybatis;

3 CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), age INT);

4 INSERT INTO users(NAME, age) VALUES('孤傲蒼狼', 27);

5 INSERT INTO users(NAME, age) VALUES('白虎神皇', 27);

將SQL腳本在MySQL數(shù)據(jù)庫中執(zhí)行,完成創(chuàng)建數(shù)據(jù)庫和表的操作,如下:

到此,前期的開發(fā)環(huán)境準備工作全部完成。

2.2、使用MyBatis查詢表中的數(shù)據(jù)

1、添加Mybatis的配置文件conf.xml

在src目錄下創(chuàng)建一個conf.xml文件,如下圖所示:

conf.xml文件中的內(nèi)容如下:

1 <?xml version="1.0" encoding="UTF-8"?>

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

2、定義表所對應的實體類,如下圖所示:

User類的代碼如下:

1 package me.gacl.domain;

2

3 /**

4 * @author gacl

5 * users表所對應的實體類

6 */

7 public class User {

8

9 //實體類的屬性和表的字段名稱一一對應

10 private int id;

11 private String name;

12 private int age;

13

14 public int getId() {

15 return id;

16 }

17

18 public void setId(int id) {

19 this.id = id;

20 }

21

22 public String getName() {

23 return name;

24 }

25

26 public void setName(String name) {

27 this.name = name;

28 }

29

30 public int getAge() {

31 return age;

32 }

33

34 public void setAge(int age) {

35 this.age = age;

36 }

37

38 @Override

39 public String toString() {

40 return "User [id=" + id + ", name=" + name + ", age=" + age + "]";

41 }

42 }

3、定義操作users表的sql映射文件userMapper.xml

創(chuàng)建一個me.gacl.mapping包,專門用于存放sql映射文件,在包中創(chuàng)建一個userMapper.xml文件,如下圖所示:

userMapper.xml文件的內(nèi)容如下:

1 <?xml version="1.0" encoding="UTF-8" ?>

2

3

6

7

12

15

16 resultType="me.gacl.domain.User">

17 select * from users where id=#{id}

18

19

4、在conf.xml文件中注冊userMapper.xml文件

1 <?xml version="1.0" encoding="UTF-8"?>

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

20

21

22

23

5、編寫測試代碼:執(zhí)行定義的select語句

創(chuàng)建一個Test1類,編寫如下的測試代碼:

package me.gacl.test;

import java.io.IOException;

import java.io.InputStream;

import java.io.Reader;

import me.gacl.domain.User;

import org.apache.ibatis.io.Resources;

import org.apache.ibatis.session.SqlSession;

import org.apache.ibatis.session.SqlSessionFactory;

import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class Test1 {

public static void main(String[] args) throws IOException {

//mybatis的配置文件

String resource = "conf.xml";

//使用類加載器加載mybatis的配置文件(它也加載關聯(lián)的映射文件)

InputStream is = Test1.class.getClassLoader().getResourceAsStream(resource);

//構建sqlSession的工廠

SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);

//使用MyBatis提供的Resources類加載mybatis的配置文件(它也加載關聯(lián)的映射文件)

//Reader reader = Resources.getResourceAsReader(resource);

//構建sqlSession的工廠

//SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);

//創(chuàng)建能執(zhí)行映射文件中sql的sqlSession

SqlSession session = sessionFactory.openSession();

/**

* 映射sql的標識字符串,

* me.gacl.mapping.userMapper是userMapper.xml文件中mapper標簽的namespace屬性的值,

* getUser是select標簽的id屬性值,通過select標簽的id屬性值就可以找到要執(zhí)行的SQL

*/

//在命名空間“me.gacl.mapping.userMapper”中定義了一個名為“getUser”的映射語句,

//這樣它就允許你使用指定的完全限定名“me.gacl.mapping.userMapper.getUser”來調用映射語句,

//格式:命名空間名(namespace)+映射語句名(id)

String statement = "me.gacl.mapping.userMapper.getUser";//映射sql的標識字符串

//執(zhí)行查詢返回一個唯一user對象的sql

User user = session.selectOne(statement, 1);

System.out.println(user);

}

}

執(zhí)行結果如下:

可以看到,數(shù)據(jù)庫中的記錄已經(jīng)成功查詢出來了。

總結

以上是生活随笔為你收集整理的mysql可以使用mybaties框架吗_搭建一个简单的mybatis框架的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。