mybatis基礎+mybatis的增刪查改
阿新 • • 發佈:2021-12-10
一、什麼是mybatis:
MyBatis 是一款優秀的持久層框架,它支援自定義 SQL、儲存過程以及高階對映。
傳統的JDBC(資料庫連線)主要完成建立與資料庫的連線、傳送SQL語句和處理資料庫返回結果。但是在實現這些功能需要繁瑣的步驟和程式碼,而mybatis很好解決了這些問題。其內部封裝了JDBC使得開發人員有更多的精力去關注sql語句本身,而不需要花費精力去處理驅動的載入,連線的建立等等的操作。
mybatis通過xml或註解的方式將要執行的各種 statement配置起來,並通過java物件和statement中sql的動態引數進行對映生成最終執行的sql語句。最後mybatis框架執行sql並將結果對映為java物件並返回。採用ORM思想解決了實體和資料庫對映的問題,對jdbc 進行了封裝,遮蔽了jdbc api 底層訪問細節,使我們不用與jdbc api 打交道,就可以完成對資料庫的持久化操作。
MyBatis官網地址:http://www.mybatis.org/mybatis-3/
二、MyBatis開發步驟(增刪改查)
1.新增MyBatis的座標
2.建立user資料表,編寫User實體類
3.編寫對映檔案UserMapper.xml
4.編寫核心檔案SqlMapConfig.xml
1)新增mybatis依賴 和 mysql依賴
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.7</version> </dependency> <!-- mysql標記為執行時有效--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.26</version> <scope>runtime</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.22</version> </dependency>
2)建立user資料表,編寫User實體類
//編寫UserQuery實體類 對應資料庫User表字段
import lombok.Data;
@Data
public class UserQuery {
private int id;
private String name;
private int age;
private String password;
private String token;
}
3)編寫增刪查改對映檔案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"> <!--namespace 與下面語句的id一起組成查詢的標識: userMapper.findAll--> <mapper namespace="userMapper"> <!-- 對映檔案:語句查詢的結果集封裝到UserQuery物件內,resultType查詢結果對應的實體型別--> <!--select 標籤 可修改改 insert update delete--> <select id="findAll" resultType="com.studymybatis.domain.UserQuery"> select * from user </select> <insert id="save" parameterType="com.studymybatis.domain.UserQuery" > insert into user values(#{name},#{age},#{password},#{tocken}) </insert> <update id="updataUser" parameterType="com.studymybatis.domain.UserQuery"> update user set name=#{name},password=#{password} where id= #{id} </update> <delete id="deleteUser" parameterType="java.lang.Integer"> delete user from user where id=#{id}; </delete> </mapper>
4)編寫核心檔案SqlMapConfig.xml
<?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="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
5) 編寫測試程式碼 測試
package com.studymybatis.test;
import com.studymybatis.domain.UserQuery;
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.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class mybatisTest {
//查詢資料
@Test
public void test() throws IOException {
//獲得核心配置檔案
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig");
//獲得session工廠物件
SqlSessionFactory sqlSessionFactory =new SqlSessionFactoryBuilder().build(resourceAsStream);
//獲得session會話物件
SqlSession sqlSession =sqlSessionFactory.openSession();
//執行操作
List<UserQuery> userlist =sqlSession.selectList("userMapper.findAll");
//列印資料
System.out.println(userlist);
//釋放資源
sqlSession.close();
}
//插入操作
@Test
public void test1() throws IOException {
//模擬user
UserQuery user = new UserQuery();
user.setName("tom");
user.setAge(18);
user.setPassword("4444");
user.setToken("aaaaaa");
//獲得核心配置檔案
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig");
//獲得session工廠物件
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
//獲得session會話物件
SqlSession sqlSession = sqlSessionFactory.openSession();
//執行操作
sqlSession.insert("userMapper.save",user);
//mysql需要執行更新操作需要提交事務
sqlSession.commit();
//釋放資源
sqlSession.close();
}
//修改操作
@Test
public void test2() throws IOException {
//模擬user
UserQuery user = new UserQuery();
user.setId(1);
user.setName("天天");
user.setPassword("2222222");
//獲得核心配置檔案
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig");
//獲得session工廠物件
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
//獲得session會話物件
SqlSession sqlSession = sqlSessionFactory.openSession();
//執行操作
sqlSession.update("userMapper.updataUser",user);
//mysql需要執行更新操作需要提交事務
sqlSession.commit();
//釋放資源
sqlSession.close();
}
//刪除操作
@Test
public void test3() throws IOException {
//獲得核心配置檔案
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig");
//獲得session工廠物件
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
//獲得session會話物件
SqlSession sqlSession = sqlSessionFactory.openSession();
//執行操作
sqlSession.delete("userMapper.deleteUser",1);
//mysql需要執行更新操作需要提交事務
sqlSession.commit();
//釋放資源
sqlSession.close();
}
}