MyBatis的基本使用
一.導(dǎo)包,當(dāng)然如果你用的是oracle的數(shù)據(jù)庫(kù),它的jar包也要導(dǎo)入
二.寫(xiě)MyBatis的最主要配置文件
格式直接抄官網(wǎng)的(注意格式略有刪減)
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
//property非常關(guān)鍵的,必填項(xiàng)
<property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/>
<property name="username" value="spitman"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
//暫時(shí)還不需要填寫(xiě),因?yàn)檫@個(gè)xml文件還沒(méi)寫(xiě)
//不過(guò)最后所有的mapper.xml文件都要添加進(jìn)去
<mapper resource="com/thundersoft/mybatis/model/BookMapper.xml"/>
</mappers>
</configuration>
三.創(chuàng)建xml文件,定義你所需要的查詢語(yǔ)句,實(shí)際上就是上面mappers指向的文件
<mapper namespace="com.thundersoft.mybatis.model.BookMapper">
//namespace是標(biāo)識(shí)這個(gè)mapper中查詢語(yǔ)句的唯一標(biāo)識(shí)
<select id="selectBook" resultType="com.thundersoft.mybatis.bean.Book" parameterType="map">
//id表示這個(gè)sql語(yǔ)句的標(biāo)識(shí)
//resultType:表示這個(gè)返回內(nèi)容對(duì)應(yīng)的bean類(lèi)(注意要寫(xiě)完整類(lèi)名,而且即使返回的是個(gè)list也要寫(xiě)list中元素的類(lèi)名)
//parameterType: 表示查詢時(shí)需要傳入的參數(shù)類(lèi)型,這個(gè)也應(yīng)該是完整類(lèi)名,
不過(guò)如果是多個(gè)參數(shù),則可以用Map來(lái)傳入,那么這里只要寫(xiě)map就行了
select * from Book where id = #{id} //自己定義的sql語(yǔ)句
//#{xxxxxx}:這個(gè)是占位符,如果用Map傳參xxxxxx寫(xiě)map中的鍵
</select>
<select id="selectAll" resultType="com.thundersoft.mybatis.bean.Book">
select * from Book
</select>
<insert>具體查詢官方文檔</insert>
</mapper>
(二)和(三) 是寫(xiě)配置文件,非常重要
四.查詢數(shù)據(jù)
String resource = "com/thundersoft/mybatis/xml/mybatis-config.xml";
//(二)中配置的文件路徑
InputStream is = Resources.getResourceAsStream(resource);
//讀取配置文件
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(is);
//通過(guò)配置文件來(lái)構(gòu)建SqlSessionFactory 對(duì)象
SqlSession ss = ssf.openSession();
//生成會(huì)話
Map map = new HashMap();
map.put("id", "1");
map.put("price", "202110");
//把查詢需要的參數(shù)全部放入這個(gè)map中
Book book = ss.selectOne("com.thundersoft.mybatis.model.BookMapper.selectBook",map);
//(com.thundersoft.mybatis.model.BookMapper)是之前(三)中的namespace,用來(lái)標(biāo)識(shí)用哪里的mapper
//(selectBook)是具體的某個(gè)語(yǔ)句的id
System.out.println(book.getTitle());
五.更好的用法
mapper名字和sql語(yǔ)句的id寫(xiě)在字符串中,非常容易出錯(cuò),還不容易檢查
現(xiàn)在有個(gè)好辦法:
1.新建一個(gè)接口,把需要的sql語(yǔ)句抽象成一個(gè)接口
public interface BookMapper {
List<Book> selectAll();
Book selectBook(Map map);
}
2.然后把map.xml文件和這個(gè)接口取名一樣,除了后綴名,放在同一個(gè)包中
3.使用:
BookMapper bm = ss.getMapper(BookMapper.class);
//直接就會(huì)根據(jù)傳入的class對(duì)象和相同包下的BookMapper.xml文件生成一個(gè)BookMapper 的實(shí)現(xiàn)類(lèi)bm
//bm這個(gè)類(lèi)的功能就是在BookMapper.xml中sql語(yǔ)句的功能
List<Book> list = bm.selectAll();
for (Book book : list) {
System.out.println(book.getTitle());;
}
使用簡(jiǎn)單到令人發(fā)指