七、持久層框架(MyBatis)
阿新 • • 發佈:2018-03-09
ide 編碼方式 2.4 OS conn import lis 表示 gif
一、MyBatis學習
平時我們都用JDBC訪問數據庫,除了自己需要寫SQL,還要操作Connection,Statement,ResultSet這些。
使用MyBatis,只需要自己提供SQL語句,其他的工作,建立數據庫連接,Statement等一些JDBC相關異常處理工作都交給了MyBatis去做了。只關心增刪改查操作層面上。
1、建立數據庫
create database demo
2、創建實體類
package com.demo.pojo; public class Category{ private int id; private String name;View Code//屬性的getter/setter方法 publci int getId(){ return id; } public vodi setId(int id){ this.id=id; } public String getName(){ return name; } public vodi setName(String name){ this.name=name; } }
3、配置文件mybatis-config.xml
相當於hibernate.cfg.xml
作用:提供鏈接數據庫用的驅動,數據庫名稱,編碼方式,密碼賬號
<property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/demo?characterEncoding=UTF-8"/> <property name="username" value="root"> <property name="password" value="admin">
具體配置mybatis-config.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> <!--自動掃描com.demo.pojo下的類型,使得在後續配置文件Category.xml種使用resultType的時候,可以直接使用Category,而不必寫全cmo.demo.pojo.Category--> <typeAliases> <package name="com.demo.pojo"/> </typeAliases> <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/how2java?characterEncoding=UTF-8"/> <property name="username" value="root"/> <property name="password" value="admin"/> </dataSource> </environment> </environments> <!--映射Category.xml--> <mappers> <mapper resource="com/dmeo/pojo/Category.xml"/> </mappers> </configuration>View Code
4、配置文件Category.xml
在包com.demo.pojo下,新建文件Category.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"> <!--命名空間com.demo.pojo,在後續調用sql語句的時候,會用到它裏面的sql語句--> <mapper namespace="com.demo.pojo"> <!--sql語句用id:listCategory進行標示,以供後續代碼調用。resultType="Category"表示返回數據和Category關聯起來。--> <!--這裏本應該使用com.demo.pojo.Category,但是在mybatis-config.xml中的配置了<typeAliases><package name="com.demo.pojo"/></typeAliases>,所以可以直接使用Category--> <select id="listCategory" resultType="Category"> select * from category_ </select> </mapper>View Code
5、測試類TestMyBatis
package com.demo; import java.io.IOException; import java.io.InputStream; 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.demo.pojo.Category; public class TestMyBatis{ public static void main(String[] args) throw IOException{ //根據配置文件mybatis-config.xml得到sqlSessionFactory String resource="mybatis-config.xml"; InputStream inputStream=Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream); //根據sqlSessionFactory得到session SqlSession session=sqlSessionFactory.openSession(); //根據session的selectList()方法,調用sql語句listCategory,listCategory這個就是在Category.xml種那條sql語句設置的id。 List<Category> cs=session.selectList("listCategory"); //List<Category> cs=session.selectList("com.demo.pojo.listCategory");效果一樣,只是比較臃腫,建議用上面那個 for(Category c:cs){ System.out.println(c.getName()); } } }View Code
二、MyBatis的基本原理
1、應用程序找到MyBatis要的數據
2、MyBatis從數據庫找到數據
2.1、通過mybatis-config.xml定位哪個數據庫
2.2、通過Category.xml執行對應的select語句
2.3、根據Category.xml把返回的數據庫記錄封裝在Category對象中
2.4、把多個Category對象裝在一個Category集合中
3、返回一個Category集合
七、持久層框架(MyBatis)