Mybatis入門例項(一)
阿新 • • 發佈:2019-01-26
ibatis的3.X版本改名了,叫做MyBatis,暫且不討論之間的差別,今天來做一個MyBatis的小例子
其實MyBatis雖然在原始碼層面上和ibatis差別較大,但是我們實際用的時候差別並不大,只不過xml裡面的標籤名變了變,類名變了而已,其他的基本上一樣.
如果學過hibernate,會發現Mybatis裡面的類名等和hibernate的很接近,這樣做就是為了降低開發人員的學習成本.
廢話少說,上資料庫,mysql的,超級簡單
Sql程式碼- CREATETABLE `person` (
- `id` int(11) NOTNULL AUTO_INCREMENT,
- `name
- `age` int(11) DEFAULTNULL,
- `sex` varchar(255) DEFAULTNULL,
- `password` varchar(255) DEFAULTNULL,
- PRIMARYKEY (`id`)
- )
,然後將mybatis的jar包和mysql的jar包加入,僅此兩個包就行了,如果需要日誌之類的再加入log4j等.
再來一個vo,Person.java
Java程式碼- package org.qiuqiu.vo;
- publicclass Person {
- private
- private String name;
- privateint age;
- private String sex;
- private String password;
- publicint getId() {
- return id;
- }
- publicvoid setId(int id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- publicvoid setName(String name) {
- this.name = name;
- }
- publicint getAge() {
- return age;
- }
- publicvoid setAge(int age) {
- this.age = age;
- }
- public String getSex() {
- return sex;
- }
- publicvoid setSex(String sex) {
- this.sex = sex;
- }
- public String getPassword() {
- return password;
- }
- publicvoid setPassword(String password) {
- this.password = password;
- }
- }
接下來我們需要一個sql對映檔案(xml),將sql和資料庫對映,person.xml
Xml程式碼- <?xmlversion="1.0"encoding="UTF-8"?>
- <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- <mappernamespace="com.qiuqiu.dao.PersonDao">
- <cachetype="org.mybatis.caches.ehcache.EhcacheCache"/>
- <selectid="selectUserById"parameterType="int"resultType="org.qiuqiu.vo.Person">
- select * from person where id=#{id}
- </select>
- </mapper>
Mybatis的應用和ibatis的最大區別就是名稱空間,在ibatis中名稱空間是可選的,但是在Mybatis中是強制性的,這樣更好,更加規範了
最後mybatis的執行需要一個環境配置,該配置採用Configuration.xml,這個檔名貌似是官方建議的,不過你隨便修改都行,只要寫程式的時候對應上就行了
Xml程式碼- <?xmlversion="1.0"encoding="UTF-8"?>
- <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
- <configuration>
- <environmentsdefault="myexample">
- <environmentid="myexample">
- <transactionManagertype="JDBC"/>
- <dataSourcetype="POOLED">
- <propertyname="driver"value="com.mysql.jdbc.Driver"/>
- <propertyname="url"value="jdbc:mysql://localhost:3306/test"/>
- <propertyname="username"value="root"/>
- <propertyname="password"value="root"/>
- </dataSource>
- </environment>
- </environments>
- <mappers>
- <mapperresource="org/qiuqiu/vo/person.xml"/>
- </mappers>
- </configuration>
這個檔案裡面的environment標籤代表了資料庫的各種配置,事務標籤就不說了,資料來源就不用我多說了吧.
下面就可以直接用MyBatis訪問資料庫了,寫一個測試類Test.java
Java程式碼- package org.qiuqiu.test;
- import java.io.IOException;
- 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.qiuqiu.vo.Person;
- publicclass Test {
- publicstaticvoid main(String[] args) {
- SqlSessionFactory factory = null;
- try {
- factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("Configuration.xml"));
- } catch (IOException e) {
- e.printStackTrace();
- }
- SqlSession sqlSession = factory.openSession();
- Person p = (Person) sqlSession.selectOne("com.qiuqiu.dao.PersonDao.selectUserById", 5);
- System.out.println(p.getName());
- }
- }