目錄
一、小白快速認識Mybatis
二、MyBatis優勢概括
三、Mybatis 3和Spring 5 整合
1、創建物體類
2、創建SQL映射介面
3、配置Mapper映射
4、創建JDBC資源檔案
5、配置Spring
6、Mybatis配置
7、創建運行類
四、總結
五、88元可以買華為云1核2G服務器啦
一、小白快速認識Mybatis
上次《原創 Spring 5 核心技術AOP基礎專案實踐詳細記錄》中學習了Spring基礎知識,也是核心技術,這次需要先學習一下Mybatis框架,也是SSM框架中的重要組成部分,
MyBatis是一個操作資料庫的“ORM”框架,ORM全稱為面向關系映射(Object Relational Mapping),物件指的是Java中的物件,關系也就是資料庫中的資料表,MyBatis就是把資料表中的資料和Java中的物件進行映射,形成雙向轉換,
在后面的實踐中你可以發現ORM的實際意義:1個類對應1個資料表;1個類的物件對應表中的1行;1個類的物件中的屬性對應1個表中的1列,所以,以前直接使用JDBC物件操作資料庫的方法不再使用,有了MyBatis框架之后,以面向物件的方式對Java中物體類進行操作,由ORM框架轉化對資料庫的增刪查改,
那ORM框架到底是如何實作的呢?
它的內部核心技術原理為JDBC和反射機制,然后再由MyBatis進行封裝,
二、MyBatis優勢概括
官網:https://mybatis.org/mybatis-3/zh/index.html
MyBatis JAR下載:https://github.com/mybatis/mybatis-3/releases
Mybatis主要優勢概況:
- 資料表的行和物體類雙向轉換,比如ResultSet物件回傳的資料封裝到Entity或List中,或者將物體類中的資料轉換為資料表的一行,實作雙向轉換,
- SQL陳述句和Java檔案分離,MyBatis 可以通過簡單的 XML 或注解來配置和映射原始型別、介面和 Java POJO,實作了分離,代碼分層明確,有利于維護,
- 允許對SQL陳述句進行自定義優化,提高操作效率,這也是MyBatis框架替換掉Hibernate框架的主要原因,
- 減少DAO層的代碼,MyBatis將JDBC各種操作進行封裝,減少大量冗余的JDBC代碼,提高了開發效率,
- MyBatis的半自動化靈活性,功能豐富,也是半自動化的ORM框架,操作資料庫依然使用SQL陳述句,可以實作呼叫存盤程序和高級映射等功能,將SQL的靈活性融入專案開發中,
- XML和Annotation注解進行ORM,官方推薦使用XML方式,
三、Mybatis 3和Spring 5 整合
小白剛剛入門,還未學習完整框架,許多專案使用SSM框架,也就是Spring+SpringMVC+MyBatis的整合,
這里的實作相對簡單,只有Spring+MyBatis,算是一個入門,實作操作資料庫CURD的基本功能,
首先,對于入門新手,需要進行準備作業,
下載Mybatis,

解壓如下

另外,在Spring 5 框架中,默認不支持Mybatis 3進行直接的整合,需要依賴官方提供的插件mybatis-spring-1.x.x.jar,我已上傳CSDN資源,
下載地址:https://download.csdn.net/download/Charzous/15404391
匯入到library中,

1、創建物體類
/*
* User.java
* Copyright (c) 2021-02-24
* LastModified:2021/2/24 下午4:55
* Author : Charzous
* All right reserved.
*/
package spr_myb.bean;
public class User {
int id;
String username;
String password;
String sex;
String home;
String info;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getSex() {
return sex;
}
public String getHome() {
return home;
}
public void setSex(String sex) {
this.sex = sex;
}
public void setHome(String home) {
this.home = home;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return ("姓名:"+username+"\n密碼:"+password+"\n性別:"+sex+"\n學校:"+home+"\n備注:"+info);
}
}
該物體類則對應一個資料表,后續操作依賴于此類,
對應資料表為:

2、創建SQL映射介面
/*
* IUser.java
* Copyright (c) 2021-02-24
* LastModified:2021/2/24 下午5:00
* Author : Charzous
* All right reserved.
*/
package spr_myb.dao;
import spr_myb.bean.User;
public interface IUser {
User getUserByID (int id);
void insertUser(User user);//update,delete,insert陳述句是不需要設定回傳型別的,在dao的介面函式設定為void
void upUser(User user);
void delUser(int id);
}
該介面包括了增刪查改4個方法,回傳型別和引數型別有嚴格的定義,后續映射到這4個方法,
3、配置Mapper映射
<?xml version="1.0" encoding="UTF-8" ?>
<!--
~ userMap.xml
~ Copyright (c) 2021-02-24
~ LastModified:2021/2/24 下午5:58
~ Author : Charzous
~ All right reserved.
-->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="spr_myb.dao.IUser">
<select id="getUserByID" resultType="spr_myb.bean.User" parameterType="map">
SELECT * from user where id = #{id}
</select>
<insert id="insertUser" parameterType="spr_myb.bean.User" useGeneratedKeys="true" keyProperty="id">
insert into user(id,username,password,sex,home,info) values (#{id},#{username},#{password},#{sex},#{home},#{info})
</insert>
<update id="upUser" parameterType="spr_myb.bean.User">
update user set username=#{username} where id=#{id}
</update>
<delete id="delUser" parameterType="int">
delete from user where id=#{id}
</delete>
</mapper>
注意: 每個映射的id必須和介面中的方法名一致,才能形成正確的映射關系,檢驗如下:可通過箭頭跳轉到對應介面中的方法,或通過方法跳轉映射關系,


4、創建JDBC資源檔案
在專案src檔案下創建mysql-local.properties檔案,存放連接mysql資料庫的具體資訊,
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost/test?serverTimezone=UTC&characterEncoding=utf8&useSSL=false
jdbc.uid=root
jdbc.password=123456
5、配置Spring
這時需要寫Spring組態檔,檔案的配置這里不詳細講解,
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ applicationContext.xml
~ Copyright (c) 2021-02-25
~ LastModified:2021/2/24 下午6:16
~ Author : Charzous
~ Blog : https://blog.csdn.net/Charzous
~ All right reserved.
-->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/spring-tx.xsd
http://www.springframework.org/schema/aop
https://www.springframework.org/schema/aop/spring-aop.xsd">
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
<property name="locations">
<list>
<value>
mysql-local.properties
</value>
</list>
</property>
</bean>
<!--資料庫連接池-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.uid}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<!-- 配置SqlSessionFactory物件 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 注入資料庫連接池 -->
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="mybatis-config.xml"/>
</bean>
<!--配置userMapper物件-->
<!--方法1:通過掃描配置,用類名獲取-->
<!-- <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">-->
<!-- <property name="basePackage" value="spr_myb.*"/>-->
<!-- <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>-->
<!-- </bean>-->
<!--方法2:通過id-bean配置,用id名獲取-->
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="spr_myb.dao.IUser"/>
<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>
</beans>
6、Mybatis配置
<?xml version="1.0" encoding="UTF-8" ?>
<!--
~ mybatis-config.xml
~ Copyright (c) 2021-02-24
~ LastModified:2021/2/24 下午5:37
~ Author : Charzous
~ All right reserved.
-->
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- mapping檔案路徑配置 -->
<typeAliases>
<typeAlias type="spr_myb.bean.User" alias="User"/>
</typeAliases>
<mappers>
<mapper resource="spr_myb/userMap.xml"/>
</mappers>
</configuration>
主要對類與物體的映射檔案進行宣告配置,
7、創建運行類
/*
* demoTest.java
* Copyright (c) 2021-02-24
* LastModified:2021/2/24 下午6:09
* Author : Charzous
* All right reserved.
*/
package spr_myb.bean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import spr_myb.dao.IUser;
public class demoTest {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
IUser userMapper = (IUser)context.getBean("userMapper");//"userMapper"
String name="testName";
int num=1010;
String pwd="123";
String sex="男";
String school="廣東省";
String info="計算機";
User user1=new User();
user1.setId(num);
user1.setPassword(pwd);
user1.setUsername(name);
user1.setSex(sex);
user1.setHome(school);
user1.setInfo(info);
userMapper.insertUser(user1);
System.out.println("插入的資料為:");
System.out.println(user1);
}
}
驗證一下插入資料,

資料表的存入一行資料,

其他方法也測驗成功,如更新資料、洗掉,

四、總結
這篇學習了Mybatis框架的強大功能,以及通過實踐實作了CRUD基本操作,將Spring5和Mybatis3框架進行整合,也是技術的合并應用,強化對此方面基礎知識的理解,
小白學習下來,這個程序遇到了不少問題,開始感覺Spring的配置以及Mybatis的映射非常難搞定,后來也是慢慢理清思路,認真學習了技術的原理,最后成功正確配置映射檔案,所以寫此篇記錄一些重要的知識,與正在學習的大家一起分享,共同進步,歡迎交流指正!
感興趣的話可以看一下上篇我寫的Spring入門《原創 Spring 5 核心技術AOP基礎專案實踐詳細記錄》,
五、88元可以買華為云1核2G服務器啦
如果你想把自己專案部署云服務,或者玩一玩云服務,我推薦華為云服務器,現在是購買云服務的最好時機,開年好禮,更加實惠!
推薦理由:性價比高、個人建站、云上開發必備,穩定性強!

可以看到活動非常火爆,新用戶購買享受低至0.7折,原價1000元+,
步驟一:首先掃描二維碼,進行用戶注冊,


步驟二:可以點擊下方我的專屬鏈接或者掃碼享受此優惠價格,
華為云服務器購買鏈接:https://activity.huaweicloud.com/newyear_promotion/index.html?bpName=08a3013a6b80106f0f4ec018ce22bf60&bindType=1&salesID=chenzhenhong

對于購買云服務器,可以私信或者郵件咨詢我哦~(猜猜我的郵箱在那里可以找到)

如果覺得不錯歡迎“一鍵三連”哦,點贊收藏關注,有問題直接評論,交流學習!
我的CSDN博客:https://blog.csdn.net/Charzous/article/details/114325383
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/265968.html
標籤:其他
上一篇:新手學Python之掌握編程規范
