在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);