mybatis實現MySQL資料庫的增刪改查
阿新 • • 發佈:2020-12-29
環境:
- jdk1.8
- mysql5.7
- maven3.6.0
- IDEA
### 什麼是mybatis框架?
- MyBatis 是一款優秀的持久層框架,
- 它支援自定義 SQL、儲存過程以及高階對映。
- MyBatis免除了幾乎所有的 JDBC 程式碼以及設定引數和獲取結果集的工作。
- MyBatis可以通過簡單的 XML 或註解來配置和對映原始型別、介面和 Java POJO(Plain Old Java Objects,普通老式 Java 物件)為資料庫中的記錄。
- MyBatis 本是apache的一個[開源專案](https://baike.baidu.com/item/開源專案/3406069)iBatis, 2010年這個[專案](https://baike.baidu.com/item/專案/477803)由apache software foundation 遷移到了[google code](https://baike.baidu.com/item/google code/2346604),並且改名為MyBatis 。2013年11月遷移到[Github](https://baike.baidu.com/item/Github/10145341)。
### 下面開始搭建
1. sql檔案如下:
```
/*
SQLyog Ultimate v13.1.1 (64 bit)
MySQL - 5.7.31-log : Database - mybatis
*********************************************************************
*/
CREATE DATABASE /*!32312 IF NOT EXISTS*/`mybatis` /*!40100 DEFAULT CHARACTER SET latin1 */;
USE `mybatis`;
/*Table structure for table `user` */
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(20) NOT NULL,
`name` varchar(30) DEFAULT NULL,
`pwd` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `user` */
insert into `user`(`id`,`name`,`pwd`) values
(1,'qijian','123'),
(2,'Tom','123'),
(3,'qijian','111');
```
2. 使用 Maven 來構建專案。pom.xml檔案程式碼如下。注意我搭建該專案是mybatis-study的子專案。
```xml
```
3. XML 配置檔案中包含了對 MyBatis 系統的核心設定,包括獲取資料庫連線例項的資料來源(DataSource)以及決定事務作用域和控制方式的事務管理器(TransactionManager)。
```xml
```
注意: XML 頭部的宣告,它用來驗證 XML 文件的正確性。environment 元素體中包含了事務管理和連線池的配置。mappers 元素則包含了一組對映器(mapper),這些對映器的 XML 對映檔案包含了 SQL 程式碼和對映定義資訊。
4. 每個基於 MyBatis 的應用都是以一個 SqlSessionFactory 的例項為核心的。SqlSessionFactory 的例項可以通過 SqlSessionFactoryBuilder 獲得。而 SqlSessionFactoryBuilder 則可以從 XML 配置檔案或一個預先配置的 Configuration 例項來構建出 SqlSessionFactory 例項。這裡使用的是XML 配置檔案。
MybatisUtils工具類.
```java
package com.qijian.utils;
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 java.io.IOException;
import java.io.InputStream;
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
private static String resource = "mybatis-Config.xml";
private static InputStream inputStream;
static {
//使用mybatis的第一步:獲取 SqlSessionFactory物件
try {
inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//既然有了 SqlSessionFactory,顧名思義,我們可以從中獲得 SqlSession 的例項。
// SqlSession 提供了在資料庫執行 SQL 命令所需的所有方法。
public static SqlSession getSqlSession() throws IOException {
return sqlSessionFactory.openSession();
}
}
```
5. 實體類user如下
```java
package com.qijian.pojo;
public class User {
private int id;
private String name;
private String pwd;
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", pwd='" + pwd + '\'' +
'}';
}
public User(int id, String name, String pwd) {
this.id = id;
this.name = name;
this.pwd = pwd;
}
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 String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
```
6. UserMapper類
```java
package com.qijian.dao;
import com.qijian.pojo.User;
import java.util.List;
import java.util.Map;
public interface UserMapper {
//查詢所有的使用者
//@Select("SELECT * FROM mybatis.user WHERE id = #{id}")