沒有修復不了漏洞,只有修不成的工具人!
2020年9月10日19:29:16
一、什麼是Mybatis
1.1、什麼是mybatis
- Mybatis是一款優秀的持久層框架
- 他支援定製化SQL、儲存過程以及高階對映。
- MyBatis避免了幾乎所有的JDBC程式碼和手動設定引數以及獲取結果集。
- Mybatis可以使用簡單的XML或註解來配置和對映原生型別、介面和java的POJO(Plain Old java Objects,普通老式java物件)為資料庫中的記錄。
- Mybatis本是apache的一個開源專案iBtis,2010年這個專案由Apache software foundation前移到了google code,並且改名為MaBatis。
- 2013年11月遷移到GItHub。
1.2、持久化
資料持久化:就是將程式的資料在持久狀態和瞬時轉化的過程。
-
持久狀態;比如資料庫(JDBC),IO檔案持久化。
-
瞬時狀態:比如記憶體,斷電即失。
-
生活中冷藏也是一種持久化。
為什麼需要持久化?
- 避免斷電丟失
- 記憶體太貴
1.3、持久層
Dao層、Service層、Controller層
- 王朝的那個持久化工作的程式碼塊
- 層界線明顯
1.4、為什麼需要MyBatis?
-
幫助程式設計師將資料庫存入到資料庫中。
-
增加開發效率
-
傳統JDBC程式碼太複雜了,簡化程式碼,(框架)自動化管理。
-
易上手,易使用。(技術沒有高低之分)
- sql與程式碼分離,提高了維護性。
- 使程式設計清晰、易維護、易測試。
- 將業務邏輯與資料訪問邏輯分離。
- 靈活
- 提供xml標籤,支援編寫動態SQL。
重要的是:使用的人多!
二、第一次使用MyBatis程式
思路:搭建環境–>匯入MyBatis–>編寫程式碼–>測試!
2.1、搭建環境
2.1.1、搭建資料
CREATE TABLE `user` (
`id` int(20) NOT NULL AUTO_INCREMENT,
`name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`pws` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
INSERT INTO `user` VALUES (1, '悟空', '123');
INSERT INTO `user` VALUES (2, '八戒', '321');
INSERT INTO `user` VALUES (3, '沙僧', '000');
2.1.2、新建專案
-
新建一個maven專案
- 獲取mybatis
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.2</version> </dependency>
-
刪除sre檔案
-
在mop.xml檔案中匯入maven依賴
<!--匯入依賴-->
<dependencies>
<!--sql驅動-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<!--junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
<!--防止導包出問題-->
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>
2.2、建立.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核心配置-->
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<!-- 與&同意 Unicode編碼可以正常顯示中文 時區-->
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai"/>
<property name="username" value="root"/>
<property name="password" value="123"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/lyx/mapper/StuMapper.xml"/>
</mappers>
</configuration>
package main.java.com.lyx.dao;
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;
/**
* 工具類
* 獲取sqlSessionFactory --> sqlSession
*/
public class MybatisUtils {
//提升作用域
private static SqlSessionFactory sqlSessionFactory;
static {
try {
//使用MyBatis第一步: 獲取sqlSessionFactory物件
String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//有了sqlSessionFactory物件,獲取到SqlSession的例項了。
//SqlSession中包含了面向資料庫執行Sql命令的所有方法。
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
}
2.3、編寫程式碼
-
實體類
package main.java.com.lyx.pojo; //實體類 public class user { private int id; private String naem; private String pws; public user() { } public user(int id, String naem, String pws) { this.id = id; this.naem = naem; this.pws = pws; } public int getId() { return id; } public String getNaem() { return naem; } public String getPws() { return pws; } public void setId(int id) { this.id = id; } public void setNaem(String naem) { this.naem = naem; } public void setPws(String pws) { this.pws = pws; } @Override public String toString() { return "user{" + "id=" + id + ", naem='" + naem + '\'' + ", pws='" + pws + '\'' + '}'; } }
-
dao層mapper介面
public interface User_dao { List<User> getUserList(); }
-
介面實現
- (在mapper中)由原來的的UserDaoimp轉變為一個mapper配置檔案
<?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:繫結一個對應的Dao/Mapper介面--> <mapper namespace="com.lyx.dao.User_dao"> <!--select語句 傳參:parameter:型別Type,集合用Map--> <select id="getUserList" resultType="com.lyx.pojo.User"> select * from mybatis.user </select> </mapper>
2.4、測試
注意點:
- 測試類最好寫在與被測試類的路徑類似
package com.lyx;
import com.lyx.mapper.StuMapper;## 標題
import com.lyx.pojo.Stu;
import com.lyx.util.StuUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
public class StuTest {
@Test
public void test(){
//呼叫util中的getSession方法獲取到sqlSession方法
SqlSession sqlSession = StuUtil.getSqlSession();
//呼叫sqlSession方法獲取
StuMapper mapper = sqlSession.getMapper(StuMapper.class);
List<Stu> stu = mapper.getStu();
System.out.println(stu);
}
}
- 總結:失敗的原因只有一個那就是懶性
三、CURD
1、namespace
相關文章
- Linux核心發現兩個沒有被修復的DoS漏洞Linux
- PrestaShop網站漏洞修復如何修復REST網站
- 怎麼修復網站漏洞騎士cms的漏洞修復方案網站
- 【漏洞修復通知】修復Apache Shiro認證繞過漏洞Apache
- 網站漏洞修復 上傳webshell漏洞修補網站Webshell
- phpStudy poc漏洞復現以及漏洞修復辦法PHP
- struts2架構網站漏洞修復詳情與利用漏洞修復方案架構網站
- 磁碟修復工具TestDisk
- Hbase修復工具Hbck
- Linux常見漏洞修復教程!Linux
- weblogic T3 漏洞修復Web
- 網站漏洞修復之圖片驗證碼的詳細修復方案網站
- WordPress 5.1.1 釋出 修復 CSRF 漏洞
- 任意檔案上傳漏洞修復
- thinkcmf 網站最新漏洞修復方法網站
- 雲伺服器修復apache漏洞伺服器Apache
- 網站存在漏洞怎麼修復 如何修補網站程式程式碼漏洞網站
- TomcatAJP檔案包含漏洞及線上修復漏洞Tomcat
- win10 vscode 快速修復 沒有Update import from "Vue"Win10VSCodeImportVue
- Win10安全中心怎麼更新漏洞修復_win10使用安全中心更新漏洞修復教程Win10
- 英特爾修復安全引擎高危漏洞;戴爾修復SupportAssist漏洞;三星釋出新品手機
- 網站被黑該怎麼修復漏洞網站
- 運維-CVE-2020-15778漏洞修復運維
- 框架網站漏洞修復防護方法框架網站
- 修復snakeyaml漏洞,與maven打包二三事YAMLMaven
- 微信小程式漏洞怎麼修復微信小程式
- SSH Server CBC Mode Ciphers Enabled漏洞修復Server
- win10系統修復工具如何啟動_win10啟動修復工具的方法Win10
- tenorshare video repair(影片修復工具)IDEAI
- 怎麼修復網站漏洞之metinfo遠端SQL隱碼攻擊漏洞修補網站SQL
- 有做過店鋪裝修的沒?
- win10睡眠不了怎麼辦_win10睡眠沒反應如何修復Win10
- WordPress網站漏洞利用及漏洞修復解決方案網站
- 網站漏洞檢測對漏洞檢測修復方案網站
- 網站漏洞修復之Metinfo 檔案上傳漏洞網站
- laravel admin 手動修復 selectable 沒有全選/全否功能Laravel
- win10一直卡在磁碟修復怎麼修復_win10一直卡在磁碟修復開不了機如何處理Win10
- win10電腦突然沒有聲音的10種修復方法Win10