爲何使用框架

爲何使用框架

https://www.cnblogs.com/Djkang/p/9626708.html

框架的優點以下: 1.不用再考慮公共問題,框架已經幫咱們作好了。 2.能夠專心用於業務邏輯,保證核心業務邏輯的開發質量。 3.結構統一,便於學習和維護。 4.框架中繼承了前人的經驗,能夠幫助新手寫出穩定、性能優良並且結構優美的高質量程序。html

什麼是框架 框架(Framework)是一個提供了可重用的公共結構的半成品。 框架就是應用程序的「骨架」,開發者能夠在這個骨架上加入本身的東西。java

2.MyBatis介紹及其環境搭建mysql

MyBatis前身是iBatis,本是Apache的一個開源的項目 ORM框架 實體類和SQL語句之間創建映射關係 特色 基於SQL語法,簡單易學 能瞭解底層封裝過程 SQL語句封裝在配置文件中,便於統一管理與維護,下降程序的耦合度 方便程序代碼調試git

什麼是數據持久化 數據持久化就是將內存中的數據模型轉換爲存儲模型,已經將存儲模型轉換爲內存中的數據模型的統 稱。github

什麼是ORM ORM(Object/Relational Mapping)即對象/關係映射,是一種持久化技術。 在對象模型和關係數據庫模型之間創建起對應關係,而且提供了一種機制,經過JavaBean對象去操做 數據庫表中的數據。 MyBatis經過簡單的XML或者註解進行配置和原始映射,將實體類和SQL語句之間創建映射,是一種半 自動化的ORM實現。sql

MyBatis環境搭建數據庫

1.下載jar包 進入官方網站下載:mybatis.org 或者 https://github.com/mybatis/mybatis-3tomcat

下載好的jar包解壓如圖所示安全

lib目錄中存放着編譯依賴包,各依賴文件說明以下:mybatis

2.部署jar文件到項目中 3.建立MyBatis核心配置文件mybatis-config.xml MyBatis核心配置文件主要用於配置數據庫鏈接和MyBatis運行時所需的各類特性,包含了設置和影響 MyBatis行爲的屬性。 在項目工程下建立「Source Folder」類型的resources目錄,將配置文件放入,通常將配置文件命名 爲"mybatis-config.xml" mybatis-config.xml文件的幾個經常使用元素的做用以下:

1.configuration:配置文件的根元素節點 2.properties:經過resource屬性從外部指定properties屬性文件 (database.properties),database.properties屬性文件描述數據庫鏈接的相關配置,包括數據庫驅動 (jdbc.driver)、鏈接數據庫的url(jdbc.url)、數據庫用戶名(jdbc.user)、數據庫密碼(jdbc.pwd),位置也 在/resoureces目錄下。 3.settings:設置MyBatis運行中的一些行爲,好比此處設置MyBatis的log日誌實現爲LOG4J,即便用 log4j實現日誌功能。 4.environments:表示配置MyBatis的多套運行環境,將SQL映射到多個不一樣的數據庫上,該元素節 點下能夠配置多個environment子元素節點,可是必須指定其中一個默認運行環境(經過default指 定)。 5.environment:配置MyBatis的一套運行環境,需指定運行環境ID、事務管理、數據源配置等相關信 息。 6.mappers:做用是告訴MyBatis去哪裏找到SQL映射文件(該文件內容是開發者定義的映射sql語句), 整個項目中能夠有1個或多個SQL映射文件 7.mapper:mappers的子元素節點,具體指定SQL映射文件的路徑,其中resource屬性的值表述了sql 映射文件的路徑(類資源路徑)

示例1:

複製代碼

<?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>

<!--引入database.properties文件-->

<properties resource="database.properties"/> <!--配置log的實現爲LOG4J--> <settings> <setting name="logImpl" value="LOG4J"/> </settings> <!--配置運行環境--> 複製代碼 <environments default="development"> <environment id="development"> <!--配置事務管理,採用JDBC的事務管理--> <transactionManager type="JDBC"></transactionManager> <!--POOLED:mybatis自帶的數據源,JNDI:基於tomcat的數據源--> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.user}"/> <property name="password" value="${jdbc.pwd}"/> </dataSource> </environment> </environments> <!--將mapper文件加入到配置文件中--> <mappers> <mapper resource="com/ssms/dao/user/UserMapper.xml"/> </mappers> </configuration> 複製代碼 複製代碼 注意:mybatis-config.xml文件的元素節點是有必定順序的,節點位置若不按順序排位,那麼XML文件 會報錯。 database.properties jdbc.driver=com.mysql.jdbc.Driver jdbc.user=root jdbc.pwd=1234 jdbc.url=jdbc:mysql://localhost:3306/ssms? useUnicode=true&characterEncoding=utf-8&useSSL=false 複製代碼

複製代碼 4.建立持久化類(POJO)和SQL映射文件 POJO(Plain Ordinary Java Object),即普通Java對象,POJO類能夠簡單理解爲符合JavaBean規範的 實體類,它不須要繼承和實現任何特殊的Java基類或者接口。

建立用戶表POJO類 示例2:

複製代碼 public class User { private Integer id; //id private String userCode; //用戶編碼 private String userName; //用戶名稱 private String userPassword; //用戶密碼 private Integer gender; //性別 private Date birthday; //出生日期 private String phone; //電話 private String address; //地址 private Integer userRole; //用戶角色 private Integer createdBy; //建立者 private Date creationDate; //建立時間 private Integer modifyBy; //更新者 private Date modifyDate; //更新時間 //省略getter&setter方法 } 注意:在MyBatis中,不須要POJO類名與數據庫表名一致,由於MyBaits是POJO與SQL語句之間的映 射機制,通常狀況下,保證POJO對象的屬性與數據庫表的字段名一致便可。 複製代碼 複製代碼 示例3:

<?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.ssms.dao.user.UserMapper"> <!--查詢用戶表記錄--> <select id="count" resultType="int"> SELECT count(1) AS COUNT FROM USER </select> </mapper> 複製代碼 經驗: SQL映射文件通常都對應於相應的POJO,因此通常都是採用POJO的名稱+Mapper的規則來進行命 名,固然該Mapper文件屬於DAO層的操做,應該放置在dao包下,並根據業務功能進行分包放置。 上述配置文件中各元素的意義: mapper:映射文件的根元素節點,只有一個屬性namespace namespace:用於區分不一樣的mapper,全局惟一 select:表示查詢語句,是MyBatis最經常使用的元素之一,經常使用屬性以下: id屬性:該命名空間下惟一標識符 resultType屬性:表示SQL語句返回值類型,此處經過SQL語句返回的是int類型

複製代碼 5.建立測試類 在工程中加入JUnit4,建立測試類(UserMapperTest.java)進行測試,代碼以下: public class UserMapperTest { public static void main(String[] args) throws Exception { //1.讀取全局配置文件:mybatis-config.xml String resource="mybatis-config.xml"; //獲取mybatis-config.xml文件的輸入流 InputStream is= Resources.getResourceAsStream(resource); //2.建立SqlSessionFactory對象 SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(is); //建立SqlSession int count=0; SqlSession sqlSession=null; sqlSession=factory.openSession(); count=sqlSession.selectOne("com.ssms.dao.user.UserMapper.count"); sqlSession.close(); System.out.println(count); } } 複製代碼 3.MyBatis的基本要素——核心對象

SqlSessionFactoryBuilder 1.build()方法使用三種形式的配置信息,分別是InputStream(字節流)、Reader(字符流)、 Configuration(類) 2.SqlSessionFactoryBuilder最大特色是用過即丟 SqlSessionFactory 1.openSession()方法獲取SqlSession實例,openSession()傳入參數true表示關閉事務控制,自動提 交,false開啓事務控制機制。默認爲true。 2.SqlSessionFactory一旦建立,就會在整個應用運行過程當中始終存在。 MyBatisUtil.java 示例:

複製代碼 public class MyBatisUtil { private static SqlSessionFactory factory; static { try { InputStream is= Resources.getResourceAsStream("mybatis-config.xml"); factory=new SqlSessionFactoryBuilder().build(is); }catch (IOException e){ e.printStackTrace(); } } public static SqlSession createSqlSession(){ return factory.openSession(false); } public static void closeSqlSession(SqlSession sqlSession){ if (null!=sqlSession){ sqlSession.close();     }   }

} 複製代碼 SqlSession 1.SqlSession是用於執行持久化操做的對象,相似於JDBC中的Connection。 2.SqlSession對應一次數據庫會話,SqlSession不是線程安全的。 3.SqlSession有兩種使用方式 第一種使用方式: 1).先在Mapper文件中添加一個select節點

複製代碼

<!--查詢用戶列表-->

<select id="getUserList" resultType="com.ssms.pojo.User"> SELECT * FROM USER </select> 2).編寫測試 SqlSession sqlSession=null; List<User> userList=new ArrayList<User>(); try{ sqlSession= MyBatisUtil.createSqlSession(); userList=sqlSession.selectList("com.ssms.dao.user.UserMapper.getUserList"); }catch (Exception ex){ ex.printStackTrace(); }finally { MyBatisUtil.closeSqlSession(sqlSession); } for (User user : userList) { System.out.println(user.getUserName()); } 複製代碼 第二種使用方式: 基於上面的Mapper配置文件

複製代碼 1).編寫接口 public interface UserMapper { /**

  • 獲取用戶列表
  • @return */ List<User> getUserList(); } 2).編寫測試 SqlSession sqlSession=null; List<User> userList=new ArrayList<User>(); try{ sqlSession= MyBatisUtil.createSqlSession(); userList=sqlSession.getMapper(UserMapper.class).getUserList(); }catch (Exception ex){ ex.printStackTrace(); }finally { MyBatisUtil.closeSqlSession(sqlSession); } for (User user : userList) { System.out.println(user.getUserName()); } 注意推薦使用第二種方式 複製代碼 4.MyBatis的基本要素——核心配置文件

複製代碼 1.properties元素 描述的都是外部化,可替代的屬性 1).經過外部文件獲取屬性值 jdbc.driver=com.mysql.jdbc.Driver jdbc.user=root jdbc.pwd=1234 jdbc.url=jdbc:mysql://localhost:3306/

<!--引入database.properties文件-->

<properties resource="database.properties"/> …… <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.user}"/> <property name="password" value="${jdbc.pwd}"/> </dataSource> 2).直接配置爲xml,再使用這些屬性值 <properties> <property name="jdbc.driver" value="com.mysql.jdbc.Driver"/> …… </properties>

…… <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/>

<property name="username" value="${jdbc.user}"/>

<property name="password" value="${jdbc.pwd}"/> </dataSource>

注意:兩種方式同時使用,外部的同名屬性會覆蓋propertie節點的值

複製代碼 2.settings元素

這個此處省略了

複製代碼 3.typeAliases元素 typeAliases元素的做用是配置類型別名 示例: <typeAliases>

<!--給實體類起別名-->

<typeAlias type="com.ssms.pojo.User" alias="user"/> </typeAliases> 自動掃描JavaBean 示例: <typeAliases> <package name="com.ssms.pojo.User"/> </typeAliases> 那麼UserMapper.xml修改以下 <select id="getUserList" resultType="User"> SELECT * FROM USER </select> 複製代碼 複製代碼 4.environments元素 用於配置多套環境,如開發環境、測試環境、生產環境等,須要明確選擇當前惟一一個運行環境 示例: <!--配置運行環境--> <environments default="development"> <environment id="development"> <!--配置事務管理,採用JDBC的事務管理--> <transactionManager type="JDBC"></transactionManager> <!--POOLED:mybatis自帶的數據源,JNDI:基於tomcat的數據源--> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.user}"/> <property name="password" value="${jdbc.pwd}"/> </dataSource> </environment> <environment id="test"> …… </environment> </environments> 複製代碼 複製代碼 5.mappers元素 用來定義SQL的映射語句,告訴MyBatis去哪裏找 1).使用類資源路徑獲取資源 <mappers> <mapper resource="com/ssms/dao/user/UserMapper.xml"/> </mappers> 2).使用URL獲取資源 <mappers> <mapper url="file:///E:/sqlmappers/UserMapper.xml"/> </mappers>

相關文章
相關標籤/搜索