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

MyBatis查詢數(shù)據(jù)庫(2)

這篇具有很好參考價值的文章主要介紹了MyBatis查詢數(shù)據(jù)庫(2)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

前言??

一、增刪查改操作??

1、查??

Ⅰ、mapper接口:??

Ⅱ、UserMapper.xml 查詢所有用戶的具體實現(xiàn) SQL:??

Ⅲ、進行單元測試??

2、增、刪、改操作??

Ⅰ、增??

添加用戶??

添加用戶并且返回自增 id??

Ⅱ、改??

根據(jù)id修改用戶名??

開啟 MyBatis sql 日志打印??

Ⅲ、刪??

二、在單元測試時不污染數(shù)據(jù)庫???


前言??

??????SSM專欄更新中,各位大佬覺得寫得不錯,支持一下,感謝了!??????

Spring + Spring MVC + MyBatis_冷兮雪的博客-CSDN博客

上篇我們寫了一個簡單的根據(jù)id進行查詢,知道了如何去進行查詢,下面來仔細講講增刪改查操作。

一、增刪查改操作??

下面操作會使用到Spring Boot單元測試,可以先看:

Spring Boot單元測試_spring boot 單元測試_冷兮雪的博客-CSDN博客

1、查??

查詢所有的用戶:

Ⅰ、mapper接口:??

package com.example.ssmdemo1.mapper;

import com.example.ssmdemo1.entity.Userinfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper//需要添加 @Mapper 注解
public interface UserMapper {
    /**
     * 根據(jù)用戶id查詢用戶信息
     * @param id
     * @return
     */
    Userinfo getUserById(@Param("id") Integer id);

    //查詢所有的用戶
    List<Userinfo> getAll();
}

MyBatis查詢數(shù)據(jù)庫(2),Spring + Spring MVC + MyBatis,mybatis,java,開發(fā)語言

Ⅱ、UserMapper.xml 查詢所有用戶的具體實現(xiàn) SQL:??

MyBatis查詢數(shù)據(jù)庫(2),Spring + Spring MVC + MyBatis,mybatis,java,開發(fā)語言

使用$進行傳遞參數(shù)可能會SQL注入,所以大部分情況下是使用#的?

<?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.example.ssmdemo1.mapper.UserMapper">
    <select id="getUserById" resultType="com.example.ssmdemo1.entity.Userinfo">
        select * from userinfo where id=${id}
    </select>
    <select id="getAll" resultType="com.example.ssmdemo1.entity.Userinfo">
        select * from userinfo
    </select>
</mapper>

Ⅲ、進行單元測試??

MyBatis查詢數(shù)據(jù)庫(2),Spring + Spring MVC + MyBatis,mybatis,java,開發(fā)語言

MyBatis查詢數(shù)據(jù)庫(2),Spring + Spring MVC + MyBatis,mybatis,java,開發(fā)語言

在UserMapperTest中就有了getAll的測試代碼:

MyBatis查詢數(shù)據(jù)庫(2),Spring + Spring MVC + MyBatis,mybatis,java,開發(fā)語言

添加單元測試業(yè)務邏輯?

package com.example.ssmdemo1.mapper;

import com.example.ssmdemo1.entity.Userinfo;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

import static org.junit.jupiter.api.Assertions.*;

@SpringBootTest//1、表明當前單元測試是運行在Spring Boot環(huán)境中的
class UserMapperTest {
    //2、注入測試對象
    @Autowired
    private UserMapper userMapper;

    @Test
    void getUserById() {
        //3、添加單元測試的業(yè)務代碼
        Userinfo userinfo=userMapper.getUserById(1);
        System.out.println(userinfo);
        //判斷1是否等于2 簡單斷言
        Assertions.assertEquals("admin",userinfo.getUsername());
    }

    @Test
    void getAll() {
        List<Userinfo> list=userMapper.getAll();
        Assertions.assertEquals(1,list.size());//斷言判斷l(xiāng)ist集合里面是否只有一條數(shù)據(jù),即查詢數(shù)據(jù)庫中只有一個用戶
    }
}

?測試正確:

MyBatis查詢數(shù)據(jù)庫(2),Spring + Spring MVC + MyBatis,mybatis,java,開發(fā)語言

?如果我們沒有設置resultType,則 MyBatis無法自動將查詢結果映射到Java對象,這就會導致單元測試失敗并報錯。

MyBatis查詢數(shù)據(jù)庫(2),Spring + Spring MVC + MyBatis,mybatis,java,開發(fā)語言

2、增、刪、改操作??

與查詢操作都是一樣的,只是使用的標簽不一樣:

  • <insert>標簽:插入語句
  • <update>標簽:修改語句
  • <delete>標簽:刪除語句

Ⅰ、增??

添加用戶??

①、在接口(UserMapper)中聲明方法

    Integer add(Userinfo user);

②、UserService

public Integer getAdd(Userinfo user) {return userMapper.add(user);}

③、在xml中提供實現(xiàn)

<insert id="add">
        insert into userinfo(username,password) values(#{username},#{password})
</insert>

#{} 進行賦值使用的是對象中的屬性。

注意:對應的不是數(shù)據(jù)庫的字段,而是程序類中的屬性。

④、controller 實現(xiàn)代碼:

@RequestMapping(value = "/add",method = RequestMethod.POST)
    public Integer add(@RequestBody Userinfo user){
        return userService.getAdd(user);
    }

⑤、單元測試

@Test
    void add() {
        //偽代碼,構建對象并設置對應的值
        //本來是前端傳值過來
        Userinfo userinfo=new Userinfo();
        userinfo.setUsername("張三");
        userinfo.setPassword("123456");
        //調(diào)用mybatis 添加方法執(zhí)行添加操作
        int result=userMapper.add(userinfo);
        Assertions.assertEquals(1,result);
    }

?單元測試成功,可以去看數(shù)據(jù)庫也添加了一條數(shù)據(jù)

MyBatis查詢數(shù)據(jù)庫(2),Spring + Spring MVC + MyBatis,mybatis,java,開發(fā)語言

但是如果我們?nèi)カ@取這個用戶的id,就會報空指針異常:

MyBatis查詢數(shù)據(jù)庫(2),Spring + Spring MVC + MyBatis,mybatis,java,開發(fā)語言

添加用戶并且返回自增 id??

?如果我們想在添加用戶的時候同時去獲取他的id,具體實現(xiàn)如下:

①、在接口(UserMapper)中聲明方法

Integer addGetid(Userinfo user);

②、UserService

public Integer addGetid(Userinfo user) {return userMapper.addGetid(user);}

③、在xml中提供實現(xiàn)

<insert id="addGetid" useGeneratedKeys="true" keyProperty="id">
        insert into userinfo(username,password) values(#{username},#{password})
</insert>
  • useGeneratedKeys:這會令 MyBatis 使用?JDBC 的 getGeneratedKeys 方法來取出由數(shù)據(jù)庫內(nèi)部生成的主鍵(比如:像 MySQL 和 SQL Server 這樣的關系型數(shù)據(jù)庫管理系統(tǒng)的自動遞增字段),默認值:false。
  • keyColumn:設置生成鍵值在表中的列名,在某些數(shù)據(jù)庫(像 PostgreSQL)中,當主鍵列 不是表中的第?列的時候,是必須設置的。如果?成列不止?個,可以用逗號分隔多個屬性 名稱。
  • keyProperty:指定能夠唯?識別對象的屬性,MyBatis會使用?getGeneratedKeys 的返回值或 insert 語句的 selectKey 子元素設置它的值,默認值:未設置(unset)。如果生成列不止?個,可以?逗號分隔多個屬性名稱。

④、controller 實現(xiàn)代碼:

 @RequestMapping(value = "/add2", method = RequestMethod.POST)
    public Integer add2(@RequestBody Userinfo user) {
        userService.addGetid(user);
        return user.getId();
    }

⑤、單元測試

@Test
    void addGetid() {
        //偽代碼,構建對象并設置對應的值
        //本來是前端傳值過來
        Userinfo userinfo=new Userinfo();
        userinfo.setUsername("張三");
        userinfo.setPassword("123456");
        //調(diào)用MyBatis 添加方法執(zhí)行添加操作 返回受影響的行數(shù)
        int result=userMapper.addGetid(userinfo);
        int id=userinfo.getId();//得到自增id(MyBatis自動賦值)
        System.out.println("id:"+id);
        Assertions.assertEquals(1,result);
    }

?一樣的代碼,就一行代碼不同

MyBatis查詢數(shù)據(jù)庫(2),Spring + Spring MVC + MyBatis,mybatis,java,開發(fā)語言

Ⅱ、改??

根據(jù)id修改用戶名??

①、在接口(UserMapper)中聲明方法

/**
     * 修改用戶
     * @param userinfo
     * @return
     */
    Integer upUserName(Userinfo userinfo);

②、在xml中提供實現(xiàn)

<update id="upUserName">
        update userinfo set username=#{username} where id=#{id}
</update>

③、單元測試

將之前添加的張三修改成為李四

@Test
    void upUserName() {
        // 構建測試數(shù)據(jù)
        Userinfo userinfo = new Userinfo();
        userinfo.setId(9);
        userinfo.setUsername("李四");
        int result = userMapper.upUserName(userinfo);
        System.out.println("修改:" + result);
        Assertions.assertEquals(1, result);
    }

修改成功:?

MyBatis查詢數(shù)據(jù)庫(2),Spring + Spring MVC + MyBatis,mybatis,java,開發(fā)語言

如果我們需要在控制臺看到SQL語句,需要去配置文件進行配置,因為這默認是隱藏MyBatic生成SQL語句的細節(jié)

開啟 MyBatis sql 日志打印??

①、添加配置文件

# 開啟 mybatis sql 日志打印
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
logging.level.com.example.demo=debug

②、重新運行單元測試

@Test
    void upUserName() {
        // 構建測試數(shù)據(jù)
        Userinfo userinfo = new Userinfo();
        userinfo.setId(9);
        userinfo.setUsername("張三");
        int result = userMapper.upUserName(userinfo);
        System.out.println("修改:" + result);
        Assertions.assertEquals(1, result);
    }

?執(zhí)行成功:

MyBatis查詢數(shù)據(jù)庫(2),Spring + Spring MVC + MyBatis,mybatis,java,開發(fā)語言

結論: 可以看到這個就是jdbc鏈接,這個SQL寫法也是jdbc的寫法,也就是說mybatis是基于jdbc的,MyBatis使用了JDBC來與數(shù)據(jù)庫進行交互,它也簡化了JDBC的使用,提供了更方便的數(shù)據(jù)庫訪問方式。。

建議大家在開發(fā)階段是開啟SQL的打印,可以更好的幫助你找到錯誤。

Ⅲ、刪??

①、在接口(UserMapper)中聲明方法

int delById(@Param("id") Integer id);

②、在xml中提供實現(xiàn)

<delete id="delById">
        delete from userinfo where id=#{id}
</delete>

?③、單元測試

將id為9的用戶刪除:

@Test
    void delById() {
        int id=9;
        int result=userMapper.delById(id);
        System.out.println("刪除:"+result);
        Assertions.assertEquals(1,result);
    }

刪除成功:?

MyBatis查詢數(shù)據(jù)庫(2),Spring + Spring MVC + MyBatis,mybatis,java,開發(fā)語言

二、在單元測試時不污染數(shù)據(jù)庫???

在需要的地方添加注解:@Transactional(可以修飾方法也可以修飾類)

MyBatis查詢數(shù)據(jù)庫(2),Spring + Spring MVC + MyBatis,mybatis,java,開發(fā)語言

如下面,去修飾UserMapper整個類:

MyBatis查詢數(shù)據(jù)庫(2),Spring + Spring MVC + MyBatis,mybatis,java,開發(fā)語言

MyBatis查詢數(shù)據(jù)庫(2),Spring + Spring MVC + MyBatis,mybatis,java,開發(fā)語言文章來源地址http://www.zghlxwxcb.cn/news/detail-602858.html

到了這里,關于MyBatis查詢數(shù)據(jù)庫(2)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • MyBatis查詢數(shù)據(jù)庫(1)

    MyBatis查詢數(shù)據(jù)庫(1)

    ??????SSM專欄更新中,各位大佬覺得寫得不錯,支持一下,感謝了!?????? Spring + Spring MVC + MyBatis_冷兮雪的博客-CSDN博客 經(jīng)過前?的學習咱們 Spring 系列的基本操作已經(jīng)實現(xiàn)的差不多了,接下來,咱們來學習更重要的知識,將前端傳遞的數(shù)據(jù)存儲起來,或者查詢

    2024年02月15日
    瀏覽(23)
  • MyBatis查詢數(shù)據(jù)庫(4)

    MyBatis查詢數(shù)據(jù)庫(4)

    ??????SSM專欄更新中,各位大佬覺得寫得不錯,支持一下,感謝了!?????? Spring + Spring MVC + MyBatis_冷兮雪的博客-CSDN博客 終于到了MyBatis最后一篇,這篇講的是 動態(tài)SQL的使用。 動態(tài) SQL?是Mybatis的強大特性之?,能夠完成不同條件下不同的 SQL?拼接。 可以參考官

    2024年02月14日
    瀏覽(39)
  • MyBatis查詢數(shù)據(jù)庫(2)

    MyBatis查詢數(shù)據(jù)庫(2)

    目錄 前言?? 一、增刪查改操作?? 1、查?? Ⅰ、mapper接口:?? Ⅱ、UserMapper.xml 查詢所有用戶的具體實現(xiàn) SQL:?? Ⅲ、進行單元測試?? 2、增、刪、改操作?? Ⅰ、增?? 添加用戶?? 添加用戶并且返回自增 id?? Ⅱ、改?? 根據(jù)id修改用戶名?? 開啟 MyBatis sql 日志打印?? Ⅲ、

    2024年02月16日
    瀏覽(19)
  • MyBatis 查詢數(shù)據(jù)庫、持久層框架簡介

    MyBatis 查詢數(shù)據(jù)庫、持久層框架簡介

    MyBatis是一款優(yōu)秀的持久層框架,支持自定義SQL、存儲過程以及高級映射。它通過簡單的XML或注解來配置和映射原始類型、接口和Java POJO為數(shù)據(jù)庫中的記錄。

    2024年02月12日
    瀏覽(16)
  • MyBatis查詢數(shù)據(jù)庫之一(概念+創(chuàng)建項目+基礎交互)

    MyBatis查詢數(shù)據(jù)庫之一(概念+創(chuàng)建項目+基礎交互)

    目錄 1.MyBatis是什么? 2.為什么學習MyBatis? 3. 怎么學 MyBatis 4.第?個MyBatis查詢 4.1 添加MyBatis框架支持 4.1.1老項目添加MyBatis 4.1.2 新項目添加MyBatis 4.2 配置連接字符串和MyBatis 4.2.1 配置連接字符串 4.2.2 配置 MyBatis 中的 XML 路徑 5. 使用 MyBatis 的操作模式操作數(shù)據(jù)庫 5.1 添加實體類

    2024年02月13日
    瀏覽(45)
  • 【Spring Boot】數(shù)據(jù)庫持久層框架MyBatis — MyBatis簡介

    本節(jié)首先會介紹什么是ORM、什么是MyBatis、MyBatis的特點以及核心概念,最后介紹MyBatis是如何啟動、如何加載配置文件的? ORM(Object Relational Mapping,對象關系映射)是為了解決面向對象與關系數(shù)據(jù)庫存在的互不匹配現(xiàn)象的一種技術。簡單地說,ORM通過使用描述對象和數(shù)據(jù)庫之

    2024年02月11日
    瀏覽(29)
  • MyBatis 查詢數(shù)據(jù)庫之二(增、刪、改、查操作)

    MyBatis 查詢數(shù)據(jù)庫之二(增、刪、改、查操作)

    目錄 1. 配置打印 MyBatis 執(zhí)行的SQL 2. 查詢操作 2.1 通過用戶 ID 查詢用戶信息、查詢所有用戶信息 (1) Mapper 接口 (2)UserMapper.xml 查詢所有用戶的具體實現(xiàn) SQL (3)進行單元測試 3. 增加操作 3.1 在 mapper(interface)里面添加增加方法的聲明 3.2 在 XMl 中添加 標簽和增加的 sql 代碼 3.3 生成

    2024年02月14日
    瀏覽(31)
  • 【Spring Boot】數(shù)據(jù)庫持久層框架MyBatis — Spring Boot構建MyBatis應用程序

    Spring Boot是用于快速構建Spring應用程序的框架。MyBatis是一種Java持久化框架,可以幫助開發(fā)人員輕松地管理數(shù)據(jù)庫。將Spring Boot與MyBatis結合使用可以使開發(fā)人員更容易地創(chuàng)建和管理數(shù)據(jù)庫應用程序。 以下是使用Spring Boot構建MyBatis應用程序的步驟: 添加MyBatis依賴項:在項目的

    2024年02月10日
    瀏覽(28)
  • 【MyBatis學習】MyBatis操縱數(shù)據(jù)庫進行查詢操作 ?MyBatis與JDBC想比怎么樣,趕快與我一起探索吧 ! ! !

    【MyBatis學習】MyBatis操縱數(shù)據(jù)庫進行查詢操作 ?MyBatis與JDBC想比怎么樣,趕快與我一起探索吧 ! ! !

    前言: 大家好,我是 良辰丫 ,從今天開始我們就要進入MyBatis的學習了,請君與我一起操縱數(shù)據(jù)庫,MyBatis到底是什么呢?我們慢慢往下瞧! ! !?????? ??個人主頁:良辰針不戳 ??所屬專欄:javaEE進階篇之框架學習 ??勵志語句:生活也許會讓我們遍體鱗傷,但最終這些傷口會成為我

    2024年02月09日
    瀏覽(17)
  • Spring日志完結篇,MyBatis操作數(shù)據(jù)庫(入門)

    Spring日志完結篇,MyBatis操作數(shù)據(jù)庫(入門)

    目錄 Spring可以對日志進行分目錄打印 日志持久化(讓日志進行長期的保存) MyBatis操作數(shù)據(jù)庫(優(yōu)秀的持久層框架) MyBatis的寫法 開發(fā)規(guī)范: 單元測試的寫法 傳遞參數(shù) 他的意思是說spring相關只打印INFO級別的標準,但是他也能獲取到debug級別的日志 日志設置顏色(只能控制控制

    2024年02月04日
    瀏覽(44)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包