溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

好程序員Java學(xué)習(xí)路線分享MyBatis之基本使用

發(fā)布時間:2020-09-30 16:34:23 來源:網(wǎng)絡(luò) 閱讀:152 作者:wx5d42865f47214 欄目:編程語言

  好程序員Java學(xué)習(xí)路線分享MyBatis之基本使用,前言,本章我們將開始學(xué)習(xí)一個非常優(yōu)秀的ORM(對象關(guān)系映射)框架:MyBatis,它是目前企業(yè)中使用最多的數(shù)據(jù)庫框架。

MyBatis簡介
   MyBatis 是一款優(yōu)秀的持久層框架,它支持定制化 SQL、存儲過程以及高級映射。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設(shè)置參數(shù)以及獲取結(jié)果集。MyBatis 可以使用簡單的 XML 或注解來配置和映射原生類型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 對象)為數(shù)據(jù)庫中的記錄。
  MyBatis的優(yōu)點有:
  1)代替JDBC完成CRUD,效率高
  2)上手容易,配置靈活
  3)是目前公司主流的ORM(對象關(guān)系映射)框架

MyBatis的基本配置
  這里我們使用Maven構(gòu)建項目,
  首先需要導(dǎo)入MyBatis和MySQL驅(qū)動的依賴
  然后再添加配置文件,MyBatis的配置文件分為兩種:
  1、MyBatis框架的總體配置文件
  2、MyBatis數(shù)據(jù)庫映射文件
  
MyBatis配置文件
  我們可以在項目的resources目錄中添加配置文件:mybatis-config.xml
1.<?xml version="1.0" encoding="UTF-8"?>
2.<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
3."http://mybatis.org/dtd/mybatis-3-config.dtd">
4.<configuration>
5.<!--environments 代表配置環(huán)境集合,此標(biāo)簽中可以有多個environment,
6.default屬性是選擇其中一個環(huán)境作為默認(rèn)的配置環(huán)境-->
7.<environments default="develop">
8.<environment id="develop">
9.<!--這里配置事務(wù)管理器為JDBC類型-->
10.<transactionManager type="JDBC"/>
11.<!--這里配置數(shù)據(jù)源,POOLED代表連接池類型的數(shù)據(jù)源-->
12.<dataSource type="POOLED">
13.<!--這里是常用的4個數(shù)據(jù)庫配置:驅(qū)動、URL、賬號、密碼-->
14.<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
15.<property name="url" value="jdbc:mysql://localhost/java1903?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8"/>
16.<property name="username" value="root"/>
17.<property name="password" value="123456"/>
18.</dataSource>
19.</environment>
20.</environments>
21.<!--這里是配置數(shù)據(jù)庫映射文件的路徑,如果有映射文件就配置到這里-->
22.<mappers>
23.<mapper resource="mappers/userMapper.xml"/>
24.</mappers>
25.</configuration>

映射文件
  MyBatis能實現(xiàn)通過Java對象來操作數(shù)據(jù)庫,那么如何通過Java對象的操作來查詢和修改數(shù)據(jù)庫的表呢?MyBatis通過映射文件來配置數(shù)據(jù)的SQL操作,將Java對象的方法映射為具體的SQL語句。
  這里我們先編寫一個UserDAO接口
26.package com.qianfeng.mybatis.dao;
27.public interface UserDAO
28.{
29.List<User> selectAll();
30.void insert(User user);
31.}
  接下來我們來配置映射文件實現(xiàn)User表的查詢和插入操作:
  
  在resources下創(chuàng)建mappers目錄,然后創(chuàng)建映射文件:userMapper.xml
32.<?xml version="1.0" encoding="UTF-8"?>
33.<!DOCTYPE mapper
34.PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
35."http://mybatis.org/dtd/mybatis-3-mapper.dtd">
36.<!-- namespace配置對應(yīng)的Java接口 -->
37.<mapper namespace="com.qianfeng.mybatis.dao.UserDAO">
38....
39.</mapper>
  mapper中可以配置四種標(biāo)簽:
  1)<insert> 配置insert語句
  2)<update> 配置update語句
  3)<delete> 配置delete語句
  4)<select> 配置select語句
  這四種標(biāo)簽的常用屬性有:
1)  id 對應(yīng)DAO接口中的方法名
  2)parameterType 對應(yīng)方法的參數(shù)類型
  3)returnType
   對應(yīng)方法的返回值類型,如:User(表的字段名和類的屬性名一樣)
4)  returnMap
對應(yīng)方法的返回值類型映射,用于表的字段名和類的屬性名不一樣的情況,實現(xiàn)字段名和屬性的映射關(guān)系
  
  這里是insert配置示例
40.<insert id="insert" parameterType="com.qianfeng.mybatis.entity.User">
41.insert into tb_user(u_name,u_password,u_realname,u_gender,u_age,u_img)
42.values(#{name},#{password},#{realname},#{gender},#{age},#{img})
43.</insert>
  其中#{...}中包含的是User對象的屬性名稱

  select配置示例
44.<resultMap id="userMap" type="com.qianfeng.mybatis.entity.User">
45.<id property="id" column="u_id"></id>
46.<result property="name" column="u_name"></result>
47.<result property="password" column="u_password"></result>
48.<result property="realname" column="u_realname"></result>
49.<result property="gender" column="u_gender"></result>
50.<result property="age" column="u_age"></result>
51.<result property="img" column="u_img"></result>
52.</resultMap>
53.<select id="selectAll" resultMap="userMap">
54.select * from tb_user
55.</select>
  returnMap配置的查詢語句返回的對象與數(shù)據(jù)庫表的映射,id是映射名,type是對應(yīng)的Java類型
  其中子標(biāo)簽id是配置表的主鍵,屬性id是Java類的屬性名,column是表的字段名,還有javaType和jdbcType屬性可以配置Java的類型和Jdbc數(shù)據(jù)類型,這兩個這里可以省略。
  result是配置除主鍵外的一般列

MyBatis的使用方法
主要步驟:
56.1)讀取配置文件,創(chuàng)建SqlSessionFactory
57.SqlSessionFactory factory =
58.new SqlSessionFactoryBuilder().build(
59.Resources.getResourceAsStream("mybatis-config.xml"));
60.2)打開數(shù)據(jù)庫會話Session
61.SqlSession sqlSession = factory.openSession();
62.3)獲得DAO接口的代理對象
63.UserDAO mapper = sqlSession.getMapper(UserDAO.class);
64.4)執(zhí)行CRUD
65.mapper.insert(...);
66.5) 提交事務(wù)
67.sqlSession.commit();
68.6) 關(guān)閉會話
69.sqlSession.close();
總結(jié)
  本章我們學(xué)習(xí)了MyBatis的基本配置,以及映射文件的寫法,也掌握了MyBatis的基本操作方法,MyBatis還有很多強大的特性,我們會在后面學(xué)習(xí)到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI