mybatis的簡單使用

在java web工程中對於數據庫的操作基本都是通過mybatis庫操作的,下面就簡單的介紹初步的使用過程。
首先我們建立了測試用的數據庫mybatis:

create database mybatis;
use mybatis;
create table users(id int primary key auto_increment,name varchar(20),age int);
insert users(name,age) values ('句芒',100);
insert users(name,age) values ('帝江',200);

我們在這個新建的數據庫中建立一個表users,然後插入兩條數據。
對應的我們要在Java web工程中創建這個表對於的java類User,很多地方(主要是使用spring的時候)又叫它bean對象。這個java類的屬性要與數據庫中的字段對應:

package ServaceStudy;

public class User {
    private int id;
    private String name;
    private int age;

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

操作數據庫是需要使用sql語句的,下面我們需要創建users表對應的sql語句的xml文件,userMapper.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="MyMapper.userMapper">
    <select id="getUser" parameterType="int" resultType="ServaceStudy.User">
    select *from users where id=#{id}
    </select>

</mapper>

mapper 標籤的屬性namespace的值一般是包名+xml文件名,作爲命名空間的值。select 標籤代表基本的sql語句增刪改查中的查,id用於唯一標識這個sql語句,parameterType屬性代表查找時傳入參數的類型,resultType代表查找結果的返回類型,select *from users where id=#{id} 這是具體的查詢語句,表示根據id查詢對應的那條數據。
好了到這位置我們已經創建了三個元素:數據庫中的一個表,表對應的java類,表對應的mapper文件。這三個元素現在是沒有關係的,我們還需要更進一步的使它們產生關聯。
在工程中我們需要創建一個xml文件用於管理mybatis在工程中的使用,這個文件大概要完成這些事情:指定連接到哪個數據庫,註冊表對應的mapper文件:

<?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://10.1.3.121:3306/mybatis" />
                 <property name="username" value="root" />
                 <property name="password" value="123456" />
             </dataSource>
         </environment>
     </environments>

     <mappers>
        <mapper resource="MyMapper/userMapper.xml"/>
     </mappers>

</configuration>

environments標籤是環境的意思,這裏指的是數據庫連接的是生產環境還是開發環境,現在開發過程中一般都連接開發環境的,dataSource數據源標籤這裏會規定連接數據庫的一些信息,driver這裏會規定默認加載的架包路徑,url設置連接數據庫的地址,username和password分別是數據庫的用戶名和密碼。
在mappers標籤中會註冊我們寫的mapper文件如:<mapperresource="MyMapper/userMapper.xml"/>
resource 就是mapper文件的路徑。
好了,到這裏我們把需要做的前期工作已經完成了,下面寫代碼測試:

package ServaceStudy;

import java.io.InputStream;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class TestMybatis {
    public static String selectUserById(Integer id) {

        InputStream input = TestMybatis.class.getClassLoader().getResourceAsStream("conf.xml");

        String statement = "MyMapper.userMapper.getUser";

        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(input);
        SqlSession session = sessionFactory.openSession();

        User user = session.selectOne(statement,id);
        session.close();
        return user.getName();
    }
}
InputStream input = TestMybatis.class.getClassLoader().getResourceAsStream("conf.xml");

是使用類加載器加載mybatis的總的配置文件的,也可以使用其自帶的類Resources類加載:Reader input = Resources.getResourceAsReader("conf.xml");

String statement = "MyMapper.userMapper.getUser";

這個是指明將要執行哪個mapper文件中的哪條sql語句。
下面獲取SqlSession執行查詢語句:

SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(input);
        SqlSession session = sessionFactory.openSession();

        User user = session.selectOne(statement,id);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章