欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Mybatis入門(mén)指南之實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)增刪改查

 更新時(shí)間:2022年10月29日 10:14:43   作者:人間煙火617  
數(shù)據(jù)持久層主要負(fù)責(zé)數(shù)據(jù)的增、刪、改、查等功能,MyBatis 則是一款優(yōu)秀的持久層框架,下面這篇文章主要給大家介紹了關(guān)于Mybatis入門(mén)指南之實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)增刪改查的相關(guān)資料,需要的朋友可以參考下

前言

我們關(guān)于Spring和Spring MVC的學(xué)習(xí)也有一段時(shí)間了,都還沒(méi)有進(jìn)行過(guò)數(shù)據(jù)庫(kù)的操作,而在實(shí)際項(xiàng)目中數(shù)據(jù)庫(kù)是必不可少的部分,所以我們接下來(lái)將來(lái)學(xué)習(xí)Mybatis框架來(lái)對(duì)數(shù)據(jù)庫(kù)進(jìn)行一些操作。

MyBatis

簡(jiǎn)介

Mybatis原本是apache的一個(gè)開(kāi)源項(xiàng)目iBatis, 2010年這個(gè)項(xiàng)目由apache software foundation遷移到了google code,并且改名為MyBatis,2013年11月遷移到Github。Mybatis是一個(gè)實(shí)現(xiàn)了數(shù)據(jù)持久化的開(kāi)源框架,簡(jiǎn)單理解就是對(duì)JDBC進(jìn)行封裝封裝再封裝。

所以當(dāng)看到iBatis的時(shí)候我們就應(yīng)該知道,iBatis就是Mybatis?,F(xiàn)在還有很多我們引入的包名還是寫(xiě)的是iBatis。

優(yōu)點(diǎn)

  • 與JDBC相比,減少了50%以上的代碼量?!?/li>
  • Mybatis是最簡(jiǎn)單的持久化框架,小巧并且簡(jiǎn)單易學(xué)?!?/li>
  • Mybatis靈活,不會(huì)對(duì)應(yīng)用程序或者數(shù)據(jù)庫(kù)的現(xiàn)有設(shè)計(jì)強(qiáng)加任何影響,SQL寫(xiě)在XML里,從程序代碼中徹底分離,降低耦合度,便于統(tǒng)一管理和優(yōu)化,可重用?!?/li>
  • 提供XML標(biāo)簽,支持編寫(xiě)動(dòng)態(tài)SQL語(yǔ)句(XML中使用if, else)?! ?/li>
  • 提供映射標(biāo)簽,支持對(duì)象與數(shù)據(jù)庫(kù)的ORM字段關(guān)系映射(在XML中配置映射關(guān)系,也可以使用注解)。

缺點(diǎn)

  • SQL語(yǔ)句的編寫(xiě)工作量較大。
  • SQL語(yǔ)句依賴(lài)于數(shù)據(jù)庫(kù),導(dǎo)致數(shù)據(jù)庫(kù)移植性差,不能隨意更換數(shù)據(jù)庫(kù)。

搭建第一個(gè)Mybatis程序

新建項(xiàng)目。

自定義項(xiàng)目名,我這里定義為myBatisDemo。

引入pom.xml依賴(lài)。

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.9</version>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.30</version>
</dependency>

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.24</version>
</dependency>

我們需要引入mybatis依賴(lài)、mysql依賴(lài)和lombok依賴(lài)。

lombok依賴(lài)我們前面就使用過(guò),我們可以簡(jiǎn)化實(shí)體類(lèi)的開(kāi)發(fā)。而mybatis依賴(lài)和mysql依賴(lài)是我們數(shù)據(jù)庫(kù)的依賴(lài)。

新建數(shù)據(jù)庫(kù)數(shù)據(jù)表。

我們對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作首先就要有數(shù)據(jù)庫(kù)。所以我們來(lái)新建一個(gè)數(shù)據(jù)庫(kù)。我們這里使用工具創(chuàng)建,不需要手敲SQL命令。

新建一個(gè)數(shù)據(jù)庫(kù)名為test,庫(kù)中建一個(gè)名為Students的數(shù)據(jù)表。

現(xiàn)在我們的表中還沒(méi)有數(shù)據(jù),等下我們使用代碼來(lái)對(duì)數(shù)據(jù)庫(kù)進(jìn)行增刪改查的操作。

新建Student實(shí)體類(lèi)。

package com.xyj.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {
    private long id;
    private String name;
    private int age;
}

我們實(shí)體類(lèi)中的屬性要對(duì)應(yīng)我們數(shù)據(jù)庫(kù)表中的字段。

配置Mybatis的配置文件。

在resources資源文件夾下面創(chuàng)建config.xml配置文件。

在comfig.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"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/test?
                useUnicode=true&amp;characterEncoding=UTF-8"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
</configuration>

driver、url、username、password分別對(duì)應(yīng)數(shù)據(jù)庫(kù)驅(qū)動(dòng)、路徑、用戶(hù)名和密碼。

創(chuàng)建StudentMapper.xml文件。

我們?cè)陂_(kāi)發(fā)中需要為每個(gè)實(shí)體類(lèi)創(chuàng)建mapper文件,我們需要在其中寫(xiě)我們對(duì)該該實(shí)體類(lèi)進(jìn)行操作的SQL語(yǔ)句。

<?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">
<mapper namespace="com.xyj.mapper.StudentMapper">

    <!--    增   -->
    <insert id="add" parameterType="com.xyj.entity.Student">
        insert into students (id,name,age) values (#{id},#{name},#{age})
    </insert>

    <!--    刪   -->
    <delete id="delete" parameterType="int">
        delete from students where id = #{id};
    </delete>

    <!--    改   -->
    <update id="update" parameterType="com.xyj.entity.Student">
        update students set age = #{age} where id = #{id}
    </update>

    <!--    查   -->
    <select id="query" resultType="com.xyj.entity.Student">
        select * from students
    </select>
</mapper>

在mapper文件中增刪改查對(duì)應(yīng)的標(biāo)簽為insert、delete、update、select。標(biāo)簽中id是我們之后調(diào)用的名字,parameterType表示我們需要傳遞的值的類(lèi)型。我們這里傳值使用#{}的格式。

在config.xml中加入mapper。

<mappers>
    <mapper resource="com/xyj/mapper/StudentMapper.xml"></mapper>
</mappers>

調(diào)用Mybitis原生接口進(jìn)行操作

public static void main(String[] args) {
    InputStream inputStream = Test.class.getClassLoader().getResourceAsStream("config.xml");
    SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
    SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
    SqlSession sqlSession = sqlSessionFactory.openSession();
}

我們首先使用輸入流對(duì)config.xml文件進(jìn)行讀取,然后使用sqlSessionFactoryBuilderbuild方法創(chuàng)建sqlSessionFactory,再用sqlSessionFactoryopenSession方法創(chuàng)建sqlSession。

Student student1 = new Student(1L,"小明",16);
Student student2 = new Student(2L,"小紅",15);
sqlSession.insert("com.xyj.mapper.StudentMapper.add",student1);
sqlSession.insert("com.xyj.mapper.StudentMapper.add",student2);
sqlSession.commit();
sqlSession.close();

調(diào)用sqlSessioninsert方法,傳入第一個(gè)參數(shù)為我們實(shí)體類(lèi)對(duì)應(yīng)mapper文件中對(duì)應(yīng)的操作id,第二個(gè)參數(shù)為數(shù)據(jù)。

我們執(zhí)行完sql之后還需要提交事務(wù),最后釋放資源。

執(zhí)行結(jié)果

成功在數(shù)據(jù)表中添加了兩條數(shù)據(jù)。

sqlSession.delete("com.xyj.mapper.StudentMapper.delete",2);

我們這里調(diào)用delete方法,刪除id為2的學(xué)生數(shù)據(jù)。

執(zhí)行結(jié)果

刪除成功!

Student student  = new Student(1L,"小剛",19);
sqlSession.update("com.xyj.mapper.StudentMapper.update",student);

調(diào)用update方法修改數(shù)據(jù)。

執(zhí)行結(jié)果

修改數(shù)據(jù)成功!

我們?cè)偬砑觾蓷l數(shù)據(jù)。

List<Student> studentList = sqlSession.selectList("com.xyj.mapper.StudentMapper.query");
System.out.println(studentList);

我們用List接收查詢(xún)的數(shù)據(jù)再打印出來(lái)。

打印結(jié)果

[Student(id=1, name=小剛, age=19), Student(id=2, name=小明, age=15), Student(id=3, name=小紅, age=17)]

查詢(xún)成功!

總結(jié)

關(guān)于Mybatis入門(mén)配置以及使用原生接口進(jìn)行增刪改查操作就是這樣,接下來(lái)的內(nèi)容我將來(lái)講解Mapper代理的方式進(jìn)行操作。喜歡的小伙伴們多多支持,你們的支持就是我更新的動(dòng)力。

到此這篇關(guān)于Mybatis入門(mén)指南之實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)增刪改查的文章就介紹到這了,更多相關(guān)Mybatis對(duì)數(shù)據(jù)庫(kù)增刪改查內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論