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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MyBatis是持久化层框架(SQL映射框架)-操作数据库

發(fā)布時間:2025/4/16 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MyBatis是持久化层框架(SQL映射框架)-操作数据库 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

MyBatis是持久化層框架(SQL映射框架)-操作數(shù)據(jù)庫

1、環(huán)境搭建

? ? ?1)、創(chuàng)建一個java工程;

? ? ?2)、創(chuàng)建測試庫,測試表,以及封裝數(shù)據(jù)的javaBean,和操作數(shù)據(jù)庫的dao接口

? ? ? ? ? ?

? ? ? ?創(chuàng)建表:自己用工具創(chuàng)建

? ? ? ? ? ? ? ?創(chuàng)建javaBean:Employee(封裝表的數(shù)據(jù))

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 + "]";} }

? ? ? ? ? ? ? ?創(chuàng)建一個Dao接口,用來操作數(shù)據(jù)庫;



?3、用MyBatis操作數(shù)據(jù)庫?

? ? ?1、導(dǎo)包

????

? ? ? ?建議導(dǎo)入日志包;在mybatis關(guān)鍵的環(huán)節(jié)就會有日志打印;

? ? ? ?log4j(日志框架);依賴類路徑下一個log4j.xml配置文件;


?2、寫配置(兩個,全局配置文件(指導(dǎo)mybatis運行的)dao接口的實現(xiàn)文件(描述dao中每個方法怎么工作)

? ? ? ? ? ? ? ?1)、第一個配置文件;(稱為mybatis的全局配置文件,指導(dǎo)mybatis如何正確運行,比如連接向哪個數(shù)據(jù)庫)

? ? ? ? ? ? ? ?2)、第二個配置文件:(編寫每一個方法都如何向數(shù)據(jù)庫發(fā)送sql語句,如何執(zhí)行。。。。相當(dāng)于接口的實現(xiàn)類)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?1)、將mapper的namespace屬性改為接口的全類名

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2)、配置細(xì)節(jié)

? ?兩個文件:

? ? ?1)、全局配置文件:mybatis-config.xml;指導(dǎo)mybatis正確運行的一些全局設(shè)置;

? ? ?2)、SQL映射文件:EmployeeDao.xml;相當(dāng)于是對Dao接口的一個實現(xiàn)描述



細(xì)節(jié):

? ? ?1)、獲取到的是接口的代理對象;mybatis自動創(chuàng)建的;

? ? ?2)、SqlSessionFactory和SqlSession

? ? ? ? ??SqlSessionFactory創(chuàng)建SqlSession對象,Factory只new一次就行

? ? ? ? ? SqlSession:相當(dāng)于connection和數(shù)據(jù)庫進(jìn)行交互的,和數(shù)據(jù)庫的一次會話,就應(yīng)該創(chuàng)建一個新的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><!-- 引入我們自己編寫的每一個接口的實現(xiàn)文件 --><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:名稱空間;寫接口的全類名,相當(dāng)于告訴MyBatis這個配置文件是實現(xiàn)哪個接口的; --> <mapper namespace="com.atguigu.dao.EmployeeDao"><!-- public Employee getEmpById(Integer id); --><!-- select:用來定義一個查詢操作 id:方法名,相當(dāng)于這個配置是對于某個方法的實現(xiàn) resultType:指定方法運行后的返回值類型;(查詢操作必須指定的)#{屬性名}:代表取出傳遞過來的某個參數(shù)的值--><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、根據(jù)全局配置文件創(chuàng)建出一個SqlSessionFactory//SqlSessionFactory:是SqlSession工廠,負(fù)責(zé)創(chuàng)建SqlSession對象;//SqlSession:sql會話(代表和數(shù)據(jù)庫的一次會話);String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);Employee employee;//2、獲取和數(shù)據(jù)庫的一次會話;getConnection();SqlSession openSession=sqlSessionFactory.openSession();try {//3、使用SqlSession操作數(shù)據(jù)庫,獲取到dao接口的實現(xiàn)EmployeeDao employeeDao = openSession.getMapper(EmployeeDao.class);//4、調(diào)用之前的方法employee = employeeDao.getEmpById(1);} finally{openSession.close();}System.out.println(employee);} }

總結(jié)

以上是生活随笔為你收集整理的MyBatis是持久化层框架(SQL映射框架)-操作数据库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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