1:mybatis的概述
mybatis是一個持久層框架,用java編寫的。
它封裝了jdbc操作的很多細節,使開發者只需要關注sql語句本身,而無需關注注冊驅動,創建連接等繁雜過程
它使用了ORM思想實現了結果集的封裝。
2:mybits入門案例:使用mybits進行最簡單的查詢(sql:select * from user)
mybatis的環境搭建(使用xml方式)
第一步:創建maven工程並導入坐標
第二步:創建實體類和dao的接口
第三步:創建Mybatis的主配置文件SqlMapConifg.xml
第四步:創建映射配置文件IUserDao.xml
環境搭建的注意事項:
第一個:創建IUserDao.xml 和 IUserDao.java時名稱是為了和我們之前的知識保持一致。
在Mybatis中它把持久層的操作接口名稱和映射文件也叫做:Mapper
所以:IUserDao 和 IUserMapper是一樣的
第二個:在idea中創建目錄的時候,它和包是不一樣的
包在創建時:com.itheima.dao它是三級結構
目錄在創建時:com.itheima.dao是一級目錄
第三個:mybatis的映射配置文件位置必須和dao接口的包結構相同
第四個:映射配置文件的mapper標簽namespace屬性的取值必須是dao接口的全限定類名
第五個:映射配置文件的操作配置(select),id屬性的取值必須是dao接口的方法名
當我們遵從了第三,四,五點之后,我們在開發中就無須再寫dao的實現類。
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.edu.hznu</groupId> <artifactId>mybatis01</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.12</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> </dependency> </dependencies> </project>
SqlMapConfig.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> <!-- 配置環境--> <environments default="mysql"> <!-- 配置mysql環境--> <environment id="mysql"> <!-- 配置事務類型--> <transactionManager type="JDBC"></transactionManager> <!-- 配置數據源(連接池)--> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/eesy_mybatis"/> <property name="username" value="root"/> <property name="password" value="199945"/> </dataSource> </environment> </environments> <!-- 映射配置文件--> <mappers> <mapper resource="cn/edu/hznu/dao/IUserDao.xml"/> </mappers> </configuration>
IUserDao.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"> <mapper namespace="cn.edu.hznu.dao.IUserDao"> <!-- 配置查詢索引--> <select id="findAll" resultType="cn.edu.hznu.domain.User"> select * from user </select> </mapper>
IUserDao.xml
package cn.edu.hznu.dao; import cn.edu.hznu.domain.User; import java.util.List; /** * Created by wjj on 2020/3/28 * * 用戶的持久層忌口 */ public interface IUserDao { /* * 查詢所有用戶操作 * */ List<User>findAll(); }
mybatisTest
package cn.edu.hznu.test; import cn.edu.hznu.dao.IUserDao; import cn.edu.hznu.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; import javax.annotation.Resource; import java.io.InputStream; import java.util.List; /** * Created by wjj on 2020/3/28 */ public class MybatisTest { /* * 入門案例 * */ public static void main(String[] args) throws Exception{ //1.讀取配置文件 InputStream in= Resources.getResourceAsStream("SqlMapConfig.xml"); //2.創建sqlsessionfactory工廠 SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder(); SqlSessionFactory factory=builder.build(in); //3.生產sqlsession對象 SqlSession sqlSession=factory.openSession(); //4.使用對象創建接口代理對象 IUserDao userDao=sqlSession.getMapper(IUserDao.class); //5.使用代理對象執行操作 List<User>users=userDao.findAll(); for (User user:users){ System.out.println(user); } //6、釋放資源 sqlSession.close(); in.close(); } }
項目目錄結構
前三步都是為了sqlsession對象,因為sqlsession對象直接操作數據庫,分三步,並采用不同的設計模式,是為了解耦合,並且提高靈活性
第四步獲得seesion對象后,通過接口類名獲得對應的Mapper對象,mapper對象中有sql語句以及查詢的類,使用代理模式,對該接口使用代理,后續操作主需要對代理對象進行訪問,使用代理可以增強已有方法(理解為代理者是結構的下層,可以實現被代理者的方法並進行修改)
第五步第六步執行方法