MyBatis是持久化层框架(SQL映射框架)-操作数据库
MyBatis是持久化層框架(SQL映射框架)-操作數據庫
1、環境搭建
? ? ?1)、創建一個java工程;
? ? ?2)、創建測試庫,測試表,以及封裝數據的javaBean,和操作數據庫的dao接口
? ? ? ? ? ?
? ? ? ?創建表:自己用工具創建
? ? ? ? ? ? ? ?創建javaBean:Employee(封裝表的數據)
Employee.java
package com.atguigu.bean;public class Employee {private Integer id;private String empName;private String email;private Integer gender;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getEmpName() {return empName;}public void setEmpName(String empName) {this.empName = empName;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public Integer getGender() {return gender;}public void setGender(Integer gender) {this.gender = gender;}/* (non-Javadoc)* @see java.lang.Object#toString()*/@Overridepublic String toString() {return "Employee [id=" + id + ", empName=" + empName + ", email="+ email + ", gender=" + gender + "]";} }? ? ? ? ? ? ? ?創建一個Dao接口,用來操作數據庫;
?3、用MyBatis操作數據庫?
? ? ?1、導包
????
? ? ? ?建議導入日志包;在mybatis關鍵的環節就會有日志打印;
? ? ? ?log4j(日志框架);依賴類路徑下一個log4j.xml配置文件;
?2、寫配置(兩個,全局配置文件(指導mybatis運行的),dao接口的實現文件(描述dao中每個方法怎么工作)
? ? ? ? ? ? ? ?1)、第一個配置文件;(稱為mybatis的全局配置文件,指導mybatis如何正確運行,比如連接向哪個數據庫)
? ? ? ? ? ? ? ?2)、第二個配置文件:(編寫每一個方法都如何向數據庫發送sql語句,如何執行。。。。相當于接口的實現類)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?1)、將mapper的namespace屬性改為接口的全類名
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2)、配置細節
? ?兩個文件:
? ? ?1)、全局配置文件:mybatis-config.xml;指導mybatis正確運行的一些全局設置;
? ? ?2)、SQL映射文件:EmployeeDao.xml;相當于是對Dao接口的一個實現描述
細節:
? ? ?1)、獲取到的是接口的代理對象;mybatis自動創建的;
? ? ?2)、SqlSessionFactory和SqlSession;
? ? ? ? ??SqlSessionFactory創建SqlSession對象,Factory只new一次就行
? ? ? ? ? SqlSession:相當于connection和數據庫進行交互的,和數據庫的一次會話,就應該創建一個新的sqlSession;
Employee.java
package com.atguigu.bean;public class Employee {private Integer id;private String empName;private String email;private Integer gender;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getEmpName() {return empName;}public void setEmpName(String empName) {this.empName = empName;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public Integer getGender() {return gender;}public void setGender(Integer gender) {this.gender = gender;}@Overridepublic String toString() {return "Employee [id=" + id + ", empName=" + empName + ", email="+ email + ", gender=" + gender + "]";} }EmployeeDao.java
package com.atguigu.dao;import com.atguigu.bean.Employee;public interface EmployeeDao {//按照員工id查詢員工public Employee getEmpById(Integer id); }mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configurationPUBLIC "-//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/mybatis_0325"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments><!-- 引入我們自己編寫的每一個接口的實現文件 --><mappers><!--resource:表示從類路徑下找資源 --><mapper resource="mybatis/EmployeeDao.xml"/></mappers></configuration>EmployeeDao.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--namespace:名稱空間;寫接口的全類名,相當于告訴MyBatis這個配置文件是實現哪個接口的; --> <mapper namespace="com.atguigu.dao.EmployeeDao"><!-- public Employee getEmpById(Integer id); --><!-- select:用來定義一個查詢操作 id:方法名,相當于這個配置是對于某個方法的實現 resultType:指定方法運行后的返回值類型;(查詢操作必須指定的)#{屬性名}:代表取出傳遞過來的某個參數的值--><select id="getEmpById" resultType="com.atguigu.bean.Employee">select * from t_employee where id=#{id}</select> </mapper>MyBatisTest.java
package com.atguigu.test;import java.io.IOException; import java.io.InputStream;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 org.junit.Test;import com.atguigu.bean.Employee; import com.atguigu.dao.EmployeeDao;public class MyBatisTest {@Testpublic void test() throws IOException {//1、根據全局配置文件創建出一個SqlSessionFactory//SqlSessionFactory:是SqlSession工廠,負責創建SqlSession對象;//SqlSession:sql會話(代表和數據庫的一次會話);String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);Employee employee;//2、獲取和數據庫的一次會話;getConnection();SqlSession openSession=sqlSessionFactory.openSession();try {//3、使用SqlSession操作數據庫,獲取到dao接口的實現EmployeeDao employeeDao = openSession.getMapper(EmployeeDao.class);//4、調用之前的方法employee = employeeDao.getEmpById(1);} finally{openSession.close();}System.out.println(employee);} }總結
以上是生活随笔為你收集整理的MyBatis是持久化层框架(SQL映射框架)-操作数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 单例模式在JDK 应用的源码分析||单例
- 下一篇: MyBatis简介——半自动的持久化层框