初識Mybatis
前言
之前看過一點關於Hibernate的知識,感覺Hibernate用起來比較方便,唯一的毛病就是需要去學習新的HQL,對於已經習慣寫SQL的我來說,不喜歡再去搗騰這些東西。於是,在看了Mybatis之後感覺很好,Mybatis與Hibernate最大的不同就是Mybatis把SQL語句的優先權交給了我們,而且配置起來也很方便。
Mybatis的配置
1.加入jar包
下載地址:https://github.com/mybatis/mybatis-3/releases
Mybatis就一個jar包
2.創建全局配置文件
<?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="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" /> <property name="username" value="root" /> <property name="password" value="1230" /> </dataSource> </environment> </environments> <mappers> <mapper resource="EmployeeMapper.xml" /> </mappers></configuration>
在environments節點配置數據源,事務等。
在Mappers節點配置SQL映射文件。
2.配置SQL映射文件
<?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="org.atguigu.mybatis.EmployeeMapper"> <select id="selectEmp" resultType="com.atguigu.mybatis.bean.Employee"> select * from tbl_employee where id = #{id} </select></mapper>
namespace為命名空間,針對不同的JavaBean有不同的namespace(畢竟查詢的類型不同,用以namespace來區分)
select節點的屬性 id是唯一標識
resultType是返回的類型,寫上實體的全類名
然後就是在select節點裡的寫上SQL語句。這裡#{id}就跟jdbc里的「?」沒有什麼區別,是一個傳遞過來的參數(類似於SpringMVC)
3.測試
@Testpublic void test() throws IOException { String resource = "mybatis-conf.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession sqlSession=sqlSessionFactory.openSession(); try { Employee emp=sqlSession.selectOne("org.atguigu.mybatis.EmployeeMapper.selectEmp",1); System.out.println(emp); }finally { sqlSession.close(); } }
根據全局配置文件得到一個SqlSessionFactory,獲取SqlSession工廠,由他來執行增刪改查,一個SqlSession就代表和資料庫的一次會話,用完關閉。使用sql的唯一標識來告訴MyBatis執行哪個Sql,Sql都是保存在sql映射文件中的。
這樣就完成了一個讀取資料庫的操作。
推薦閱讀:
※mybatis和hibernate區別大不大?
※mybatis和struts2整合發生異常
※SSM 框架整合發生異常之(mybatis-config.xml)
※Mybatis9:Mybatis與Hibernate區別
TAG:MyBatis |