国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

認(rèn)識Mybatis并實現(xiàn)增刪查改

這篇具有很好參考價值的文章主要介紹了認(rèn)識Mybatis并實現(xiàn)增刪查改。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

認(rèn)識Mybatis并實現(xiàn)增刪查改,SSM框架,學(xué)習(xí),mybatis

目錄

一.Mybatis特性

二.常見持久層技術(shù)的比較

三.搭建Mybaits環(huán)境

四.使用Mybatis

?五.通過Mybatis實現(xiàn)增刪改

?六.實現(xiàn)數(shù)據(jù)庫的查詢操作


一.Mybatis特性

  1. 定制化SQL:MyBatis允許開發(fā)人員編寫、優(yōu)化和管理自定義的SQL語句,可以滿足復(fù)雜查詢和存儲過程等高級操作的需求。

  2. 避免JDBC代碼:MyBatis抽象了JDBC底層的繁瑣操作,開發(fā)人員無需手動設(shè)置參數(shù)和獲取結(jié)果集,通過配置文件或注解即可完成數(shù)據(jù)庫操作。

  3. 靈活的映射配置:MyBatis通過簡單的XML配置文件或者注解來實現(xiàn)對象與數(shù)據(jù)庫記錄之間的映射關(guān)系,將接口和Java的POJO對象映射到數(shù)據(jù)庫表中的記錄。

  4. 高度可定制:MyBatis提供了豐富的配置選項和插件機制,可以按照項目需求進行靈活的定制和擴展。開發(fā)人員可以根據(jù)具體情況選擇合適的配置方式。

二.常見持久層技術(shù)的比較

JDBC:

  • 優(yōu)點:JDBC是Java連接數(shù)據(jù)庫的標(biāo)準(zhǔn)接口,具有廣泛的適應(yīng)性和靈活性??梢灾苯泳帉慡QL語句,對數(shù)據(jù)庫操作更為直觀。
  • 缺點:需要在代碼中編寫和管理SQL語句,導(dǎo)致代碼與SQL耦合度高,難以維護和修改。開發(fā)效率較低,代碼冗長。

Hibernate和JPA:

  • 優(yōu)點:操作簡便,開發(fā)效率高。通過對象關(guān)系映射(ORM)實現(xiàn)數(shù)據(jù)庫操作,屏蔽了底層SQL細(xì)節(jié),減少了手動編寫SQL的工作量。
  • 缺點:對于復(fù)雜的SQL查詢,可能需要繞過框架,使用特定的查詢語言。自動生成的SQL語句可能不容易進行特殊優(yōu)化。在處理大量字段的POJO進行部分映射時會比較困難。反射操作較多可能導(dǎo)致數(shù)據(jù)庫性能下降。

MyBatis:

  • 優(yōu)點:輕量級且性能出色,具有很高的執(zhí)行效率。SQL和Java代碼相分離,功能邊界清晰,Java代碼專注于業(yè)務(wù)邏輯,SQL語句專注于數(shù)據(jù)操作??梢造`活地編寫和優(yōu)化SQL語句。
  • 缺點:相對于Hibernate,開發(fā)效率稍遜一些,需要手動編寫和管理SQL語句。

三.搭建Mybaits環(huán)境

使用工具Maven idea Mysql

1.配置

在maven的pom.xml中需要配置三個模塊,mysql-connect-java、mabatis、junit

配置如下:

<!--    mysql驅(qū)動-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.33</version>
    </dependency>
      
<!--      mybatis核心-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.7</version>
    </dependency>

      <!--    junit測試-->
      <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>RELEASE</version>
          <scope>test</scope>
      </dependency>

2.構(gòu)建連接數(shù)據(jù)庫的xml

認(rèn)識Mybatis并實現(xiàn)增刪查改,SSM框架,學(xué)習(xí),mybatis

?在resources中(如果沒有resource則創(chuàng)建一個)創(chuàng)建名稱為mybatis-config.xml的配置文件

配置內(nèi)容如下

<?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><!-- 配置 -->
<!--    配置連接數(shù)據(jù)庫的環(huán)境-->
    <environments default="development">
<!--        設(shè)置環(huán)境id-->
        <environment id="development">
<!--            事務(wù)管理模式-->
            <transactionManager type="JDBC"/>
<!--            數(shù)據(jù)源類型-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<!--                配置url時候記得jdbc:mysql://localhost:3306后面加上的是選擇的具體數(shù)據(jù)庫-->
<!--                我這里選擇我創(chuàng)建的mysqltest數(shù)據(jù)庫-->
                <property name="url" value="jdbc:mysql://localhost:3306/mysqltest"/>
<!--                輸入連接你的數(shù)據(jù)庫的名稱和密碼-->
                <property name="username" value="mysql"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
<!--    配置映射文件-->
    <mappers>
<!--        這個暫時不需要設(shè)置默認(rèn)為空就行,在后面具體操作的時候再進行配置-->
        <mapper resource=""/>
    </mappers>
</configuration>


四.使用Mybatis

1.創(chuàng)建實體類

?在完成了搭建環(huán)境后,在Java下的com下創(chuàng)建目錄pojo,創(chuàng)建一個需要與數(shù)據(jù)庫映射對應(yīng)的類,比如創(chuàng)建一個用戶類

認(rèn)識Mybatis并實現(xiàn)增刪查改,SSM框架,學(xué)習(xí),mybatis

?創(chuàng)建好后設(shè)置好構(gòu)造函數(shù)、getter、toString,如下

package com.alphamilk.mybatis.pojo;

public class User {
//    設(shè)置名字
    private String name;
//    設(shè)置年齡
    private int age;
//    設(shè)置郵箱地址
    private String email;
//    設(shè)置身份id
    private int  id;

    public User(String name, int age, String email, int id) {
        this.name = name;
        this.age = age;
        this.email = email;
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public String getEmail() {
        return email;
    }

    public int getId() {
        return id;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", email='" + email + '\'' +
                ", id=" + id +
                '}';
    }
}

?2.在數(shù)據(jù)庫中創(chuàng)建同樣創(chuàng)建一樣的表

Sql語言如下:

create table table_user
(
	name varchar(10) null,
	age int null,
	email varchar(20) null,
	id int null
);

認(rèn)識Mybatis并實現(xiàn)增刪查改,SSM框架,學(xué)習(xí),mybatis

?3.創(chuàng)建業(yè)務(wù)接口類

首先在com下創(chuàng)建一個mapper包,里面再創(chuàng)建一個接口 創(chuàng)建映射接口(User對應(yīng)的就是UserMapper)

認(rèn)識Mybatis并實現(xiàn)增刪查改,SSM框架,學(xué)習(xí),mybatis

?4.創(chuàng)建接口實現(xiàn)映射

創(chuàng)建接口后,為了實現(xiàn)接口的功能,又需要實現(xiàn)java與sql的分離,則需要用xml配置實現(xiàn),在resource包下創(chuàng)建一個mappers包,寫一個對應(yīng)的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修改為對應(yīng)的接口-->
<mapper namespace="com.alphamilk.mybatis.mapper.UserMapper">
    <!--    配置實體類映射接口-->


<!--    通過標(biāo)簽的設(shè)置就可以實現(xiàn)對應(yīng)的操作,insert標(biāo)簽對應(yīng)插入操作-->
<!--    注意id需要與其作用的方法名稱對應(yīng),該方法在接口中名稱為public int insertUser();-->
<!--    內(nèi)部寫對應(yīng)的sql語句-->
    <insert id="insertUser">
        insert into table_user value ('何生',20,'915@qq.com',001)
    </insert>
</mapper>

5.實現(xiàn)接口映射后,就需要將映射的xml導(dǎo)入到mybatis-config.xml中

    <mappers>
        <!--        這個暫時不需要設(shè)置默認(rèn)為空就行,在后面具體操作的時候再進行配置-->
        <mapper resource="mappers/UserMapper.xml"/>
    </mappers>

5.最后創(chuàng)建測試類,測試Mybatis是否能夠正常運行

創(chuàng)建MybatisTest類

認(rèn)識Mybatis并實現(xiàn)增刪查改,SSM框架,學(xué)習(xí),mybatis

?內(nèi)容如下:

package com.alphamilk.mybatis;

import com.alphamilk.mybatis.mapper.UserMapper;
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;

public class MybatisTest {
    @Test
    public void  Test() throws IOException {
//       創(chuàng)建核心輸入流
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//        創(chuàng)建SqlSessionFactoryBuilder對象
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
//      獲取SqlSessionFactory對象
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
//        獲取Session會話對象,會話對象用以提供
        SqlSession sqlSession = sqlSessionFactory.openSession();
//        創(chuàng)建動態(tài)代理對象
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//        通過代理對象調(diào)用方法insertUser
        int result =  mapper.insertUser();
//        執(zhí)行完后需要記得提交事務(wù),才會保留內(nèi)容到數(shù)據(jù)庫
        sqlSession.commit();
//      執(zhí)行完后關(guān)閉會話對象
        System.out.println(result);
        sqlSession.close();

    }
}

注意用的Resource是包org.aphache.ibatis.io

認(rèn)識Mybatis并實現(xiàn)增刪查改,SSM框架,學(xué)習(xí),mybatis

?執(zhí)行后可以在數(shù)據(jù)庫中查看表

認(rèn)識Mybatis并實現(xiàn)增刪查改,SSM框架,學(xué)習(xí),mybatis

可以看到正常插入進去了


?五.通過Mybatis實現(xiàn)增刪改

增刪查改,除了查,其他操作跟上述一樣。

這里展示其源碼

由于Test測試類中有太復(fù)雜的操作,所以在com目錄下創(chuàng)建了一個util工具類,類中實現(xiàn)一個方法就是給我們返回SqlSession操作數(shù)據(jù)庫對象。

代碼如下

package com.alphamilk.mybatis.util;

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.InputStream;

public class MybatisUtil {

    public static SqlSession getSession(){
        SqlSession sqlSession =null;
        try {
//            配置核心配置輸入流
            InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//           獲取SqlSessionFactoryBuilder對象
            SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
//            獲取sqlSessionFactory對象
            SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
//            獲取sqlSession對象
            sqlSession = sqlSessionFactory.openSession();
            return sqlSession;
        }catch (Exception e){
            e.printStackTrace();
        }
        return sqlSession;
    }
}

由于需要實現(xiàn)刪該的方法,所以在接口中需要實現(xiàn)方法增加

package com.alphamilk.mybatis.mapper;

public interface UserMapper {
//    實現(xiàn)用戶插入
    public int insertUser();

//   實現(xiàn)用戶信息修改
    public int UpdateUser();

//    實現(xiàn)用戶信息消除
    public int DeleteUser();

}

對應(yīng)的映射也需要增加

<?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修改為對應(yīng)的接口-->
<mapper namespace="com.alphamilk.mybatis.mapper.UserMapper">
    <!--    配置實體類映射接口-->

<!--   方法insertUser() -->
    <insert id="insertUser">
        insert into table_user value ('何生',20,'915@qq.com',001)
    </insert>

<!--    方法UpdateUser()-->
    <update id="UpdateUser">
        update table_user set name ='黃小龍'where id=1
    </update>

<!--    方法DeleteUser()-->
    <delete id="DeleteUser">
        delete from table_user where name='黃小龍'
    </delete>
</mapper>

最后測試類實現(xiàn)

package com.alphamilk.mybatis;

import com.alphamilk.mybatis.mapper.UserMapper;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

public class MybatisTest {
    @Test
    public void Test(){
        SqlSession sqlSession = null;
        sqlSession = com.alphamilk.mybatis.util.MybatisUtil.getSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//        執(zhí)行insert方法
//        mapper.insertUser();
//        執(zhí)行修改方法
        mapper.UpdateUser();
//        執(zhí)行刪除方法
//        mapper.DeleteUser();
    }
}

實現(xiàn)數(shù)據(jù)修改效果

認(rèn)識Mybatis并實現(xiàn)增刪查改,SSM框架,學(xué)習(xí),mybatis

?實現(xiàn)數(shù)據(jù)刪除效果

認(rèn)識Mybatis并實現(xiàn)增刪查改,SSM框架,學(xué)習(xí),mybatis


?六.實現(xiàn)數(shù)據(jù)庫的查詢操作

由于數(shù)據(jù)庫查詢的操作需要返回的是數(shù)據(jù)的結(jié)果

在設(shè)置xml時候,需要而外設(shè)置參數(shù)resultType 或者 resultMap

  • ?resultType:設(shè)置結(jié)果類型,即查詢的數(shù)據(jù)要轉(zhuǎn)換的java類型
  • ?resultMap,處理一對一或者一對多的映射關(guān)系
<!--    getUserById()-->
<!--    resultType:設(shè)置結(jié)果類型,即查詢的數(shù)據(jù)要轉(zhuǎn)換的java類型
        resultMap,處理一對一或者一對多的映射關(guān)系
        這里使用returnType設(shè)置為pojo包內(nèi)的User類型(注意一定要明確詳細(xì)的類名),即返回結(jié)果是User對象
-->
    <select id="getgetUserById" resultType="com.alphamilk.mybatis.pojo.User" >
        select name from table_user where id =2
    </select>

測試類內(nèi)容

package com.alphamilk.mybatis;

import com.alphamilk.mybatis.mapper.UserMapper;
import com.alphamilk.mybatis.pojo.User;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

public class MybatisTest {
    @Test
    public void Test(){
        SqlSession sqlSession = null;
        sqlSession = com.alphamilk.mybatis.util.MybatisUtil.getSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//        執(zhí)行insert方法
//        mapper.insertUser();
//        執(zhí)行修改方法
//        mapper.UpdateUser();
//        執(zhí)行刪除方法
//        mapper.DeleteUser();
//        執(zhí)行通過id查詢
        User user =  mapper.getUserById();
        System.out.println(user);
        sqlSession.commit();
        sqlSession.close();

    }
}

認(rèn)識Mybatis并實現(xiàn)增刪查改,SSM框架,學(xué)習(xí),mybatis

?如果有多個結(jié)果則返回時候需要用集合接收

當(dāng)前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修改為對應(yīng)的接口-->
<mapper namespace="com.alphamilk.mybatis.mapper.UserMapper">
    <!--    配置實體類映射接口-->

<!--   方法insertUser() -->
    <insert id="insertUser">
        insert into table_user value ('何生',20,'915@qq.com',001)
    </insert>

<!--    方法UpdateUser()-->
    <update id="UpdateUser">
        update table_user set name ='黃小龍'where id=1
    </update>

<!--    方法DeleteUser()-->
    <delete id="DeleteUser">
        delete from table_user where name='黃小龍'
    </delete>

<!--    getUserById()-->
<!--    resultType:設(shè)置結(jié)果類型,即查詢的數(shù)據(jù)要轉(zhuǎn)換的java類型
        resultMap,處理一對一或者一對多的映射關(guān)系
        這里使用returnType設(shè)置為pojo包內(nèi)的User類型(注意一定要明確詳細(xì)的類名),即返回結(jié)果是User對象
-->
    <select id="getUserById" resultType="com.alphamilk.mybatis.pojo.User" >
        select * from table_user where id =2
    </select>
    
<!--    對應(yīng)接口內(nèi)方法public  User getUserAll();-->
    <select id="getUserAll">
        select * from table_user
    </select>
</mapper>

?測試類內(nèi)容

package com.alphamilk.mybatis;

import com.alphamilk.mybatis.mapper.UserMapper;
import com.alphamilk.mybatis.pojo.User;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.Iterator;
import java.util.List;

public class MybatisTest {
    @Test
    public void Test(){
        SqlSession sqlSession = null;
        sqlSession = com.alphamilk.mybatis.util.MybatisUtil.getSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//        執(zhí)行insert方法
//        mapper.insertUser();
//        執(zhí)行修改方法
//        mapper.UpdateUser();
//        執(zhí)行刪除方法
//        mapper.DeleteUser();
//        執(zhí)行通過id查詢
//        User user =  mapper.getUserById();
//        System.out.println(user);
//        查詢所有用戶的信息
        List<User> list = mapper.getUserAll();
        Iterator<User> iterator = list.listIterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
        sqlSession.commit();
        sqlSession.close();

    }
}

認(rèn)識Mybatis并實現(xiàn)增刪查改,SSM框架,學(xué)習(xí),mybatis

認(rèn)識Mybatis并實現(xiàn)增刪查改,SSM框架,學(xué)習(xí),mybatis


深度了解Mybatis的核心配置

Mybatis的核心配置_Alphamilk的博客-CSDN博客文章來源地址http://www.zghlxwxcb.cn/news/detail-660253.html

到了這里,關(guān)于認(rèn)識Mybatis并實現(xiàn)增刪查改的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包