我剛剛終于完成了一個增删改查的查,感覺離目标又近了一步,哈哈。。。加油
一、Mybatis介紹
MyBatis是一個支援普通sql查詢,存儲過程和進階映射的優秀持久層架構,Mybatis消除了幾乎所有的JDBC代碼和參數的手工設定以及對結果集的檢索封裝。MyBatis可以使用簡單的xml或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java對象)映射成資料庫中的記錄。
二、mybatis快速入門
2.1、準備開發環境
1、建立測試項目,普通java項目或者是JavaWeb項目均可,如下圖所示:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5CO5ETO1ImYzcTM2YWZkVGOyYzX4ETO1kDM2IzLcVDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
2、添加相應的jar包
【mybatis】
mybatis-3.1.1.jar
【MYSQL驅動包】
mysql-connector-java-5.1.7-bin.jar
3、建立資料庫和表,針對MySQL資料庫
SQL腳本如下:
create database mybatis;
use mybatis;
CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), age INT);
INSERT INTO users(NAME, age) VALUES('孤傲蒼狼', 27);
INSERT INTO users(NAME, age) VALUES('白虎神皇', 27);
将SQL腳本在MySQL資料庫中執行,完成建立資料庫和表的操作,如下:
到此,前期的開發環境準備工作全部完成。
2.2、使用MyBatis查詢表中的資料
1、添加Mybatis的配置檔案conf.xml
在src目錄下建立一個conf.xml檔案,如下圖所示
conf.xml檔案中的内容如下:
2、定義表所對應的實體類,如下圖所示:
User類的代碼如下:
package me.gacl.domain;
/**
* @author gacl
* users表所對應的實體類
*/
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;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
3、定義操作users表的sql映射檔案userMapper.xml
建立一個me.gacl.mapping包,專門用于存放sql映射檔案,在包中建立一個userMapper.xml檔案,如下圖所示:
userMapper.xml檔案的内容如下:
resultType="me.gacl.domain.User"> select * from users where id=#{id}
4、在conf.xml檔案中注冊userMapper.xml檔案
5、編寫測試代碼:執行定義的select語句、
建立一個Test1類,編寫如下的測試代碼:
package me.gacl.test;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import me.gacl.domain.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class Test1 {
public static void main(String[] args) throws IOException {
//mybatis的配置檔案
String resource = "conf.xml";
//使用類加載器加載mybatis的配置檔案(它也加載關聯的映射檔案)
InputStream is = Test1.class.getClassLoader().getResourceAsStream(resource);
//建構sqlSession的工廠
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
//使用MyBatis提供的Resources類加載mybatis的配置檔案(它也加載關聯的映射檔案)
//Reader reader = Resources.getResourceAsReader(resource);
//建構sqlSession的工廠
//SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
//建立能執行映射檔案中sql的sqlSession
SqlSession session = sessionFactory.openSession();
/**
* 映射sql的辨別字元串,
* me.gacl.mapping.userMapper是userMapper.xml檔案中mapper标簽的namespace屬性的值,
* getUser是select标簽的id屬性值,通過select标簽的id屬性值就可以找到要執行的SQL
*/
String statement = "me.gacl.mapping.userMapper.getUser";//映射sql的辨別字元串
//執行查詢傳回一個唯一user對象的sql
User user = session.selectOne(statement, 1);
System.out.println(user);
}
}
這裡我要補充下,是原來作者沒寫的!!!!!!! 因為我是新手嘛~~ 我怕有的新手跟我一樣,不知道錯誤在哪裡,特此寫出!!!!!如圖:
mapper千萬不要忘記寫啦 !!!!!
代碼如下:
package me.gacl.mapping;
import me.gacl.domain.User;
public interface userMapper {
public int getUser(User user);
}