基本配置
1.如果使用Maven管理項目,需要在pom.xml中配置依賴。
2.安裝Mybatis-3.5.7.jar包
3.進行XML配置:這里將文件命名為mybatis-config.xml
配置數據庫連接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="${驅動類(含包名)}"/><property name="url" value="${數據庫連接URL}"/><property name="username" value="${用戶名}"/><property name="password" value="${密碼}"/></dataSource></environment></environments><mappers><mapper url = "file:src/com/test/mapper/TestMapper.xml"/><!-- 存放映射器XML文件 --></mappers></configuration>
其中mappers標簽內存放XML映射器文件。
編寫Java主函數
package com.test;import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.FileInputStream;
import java.io.FileNotFoundException;public class Main {public static void main(String[] args) throws FileNotFoundException {SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(new FileInputStream("src/mybatis-config.xml"));try (SqlSession sqlSession = sqlSessionFactory.openSession(true)){System.out.println(sqlSession.selectList("getArtist"));//括號內填寫SQL映射語句的id}}
}
1.從 XML 中構建 SqlSessionFactory
每個基于 MyBatis 的應用都是以一個 SqlSessionFactory 的實例為核心的。SqlSessionFactory 的實例可以通過 SqlSessionFactoryBuilder 獲得,創建SqlSessionFactory時會調用xml配置文件。
2.從 SqlSessionFactory 中獲取 SqlSession
我們可以從中獲得 SqlSession 的實例。SqlSession 提供了在數據庫執行 SQL 命令所需的所有方法。
你可以通過 SqlSession 實例來執行已映射的 SQL 語句。SQL語句的映射需要編寫映射器XML文件。
編寫映射器(mapper)的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">
<mapper namespace="src/com/test/mapper/TestMapper.xml"><!--區分不同映射器--><!--條件查詢--><select id="getArtist" resultType="String">select aName from artist<!--填寫SQL語句,里面的變量都是數據庫的表名和字段名--></select>
</mapper>
注:若xml配置文件中出現找不到映射器文件的情況,注意配置文件中mapper標簽內的映射器引用格式。
接口函數
編寫映射器接口:
package com.test.mapper;import com.test.artist;import java.util.List;public interface TestMapperInterface {List<artist> selectArtist();artist getArtistById(int a);int addArtist(artist newArtist);int deleteArtist(int d);
}
要讓映射器關聯上映射器接口,只需要修改映射器的namespace為接口地址:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.test.mapper.TestMapperInterface"><resultMap id="test" type="com.test.artist"><result column="aID" property="aID"/></resultMap><select id="selectArtist" resultMap="test">select * from artist</select><!--條件查詢--><select id="getArtistById" resultMap="test">select * from artist where aID = #{a}<!--接口形參名--></select><!--插入操作--><insert id="addArtist">insert into artist(aID,aName,asex) values (#{aID},#{aName},#{asex})</insert><!--刪除操作--><delete id="deleteArtist" parameterType="com.test.artist">delete from artist where aID = #{d}</delete></mapper>
接口中的方法會自動對應上映射器中的SQL執行語句id
修改配置文件中的mapper路徑:
<mapper resource = "com/test/mapper/TestMapper.xml"/>
主函數調用映射器接口:
package com.test;import com.test.mapper.TestMapperInterface;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.FileInputStream;
import java.io.FileNotFoundException;public class Main {public static void main(String[] args) throws FileNotFoundException {SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(new FileInputStream("src/mybatis-config.xml"));try (SqlSession sqlSession = sqlSessionFactory.openSession(true)){TestMapperInterface mapper = sqlSession.getMapper(TestMapperInterface.class);mapper.selectArtist().forEach(System.out::println);System.out.println("\n");System.out.println(mapper.getArtistById(2089));}}
}
MyBatis與JDBC的差異
JDBC和Mybatis優缺點對比 | |
JDBC | Mybatis |
用DriverManager驅動類連接數據庫,java代碼與數據庫耦合 | 在配置xml文件中連接數據庫,使得java代碼與數據庫分離 |
在Statement對象中執行SQL語句,java代碼與SQL語句耦合 | 在映射器的xml文件中執行SQL語句,使得java代碼與SQL語句分離 |
在ResultSet對象中接收SQL語句結果,每條結果需要指針遍歷。 | 直接通過SqlSession中的方法接收SQL語句結果,結果是一個集合。 |
綜上,相比于JDBC所有功能都在java代碼中執行,Mybatis盡管結構更加復雜,但每個文件負責不同的功能,更加便于管理。