91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

MyBatis怎么根據條件批量修改字段

發布時間:2023-02-22 16:28:36 來源:億速云 閱讀:115 作者:iii 欄目:開發技術

本篇內容介紹了“MyBatis怎么根據條件批量修改字段”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

    MyBatis根據條件批量修改字段

    背景:

    給學生改作業,只要是對的都批量進行數據庫的修改

    代碼以及注釋

    • conttoller

    @RestController
    @RequestMapping("/work")
    public class WorkController {
        @Autowired
        private WorkService workService;
        
        @PutMapping("/examine")
        public HttpResponse examine(Integer[] id) {
            Integer total = workService.examine(id);
            return HttpResponse.ok("共批改[ "+total+" ]條道題","");
        }
    }
    • service

    @Service
    public class WorkService {
        @Autowired
        private WorkMapper workMapper;
        
        public Integer examine(Integer[] id) {
            return workMapper.examine(id);
        }
    }
    • mapper

    @Mapper
    public interface WorkMapper {
        Integer examine(@Param("id")Integer[] id);
    }
    • xml

    <!--根據id來批量修改WORK表里面的isEnable字段-->
    <update id="examine">
        UPDATE WORK SET isEnable=TRUE WHERE id IN
        <foreach collection="id" item="id" separator="," open="(" close=")">
            #{id}
        </foreach>
    </update>
    • 工具類HttpResponse(此需求中無關緊要的類)

    public class HttpResponse {
        private Integer status;
        private String message;
        private Object object;
        
        public static HttpResponse ok(String message) {
            return new HttpResponse(200, message, null);
        }
        
        public static HttpResponse ok(Object object) {
            return new HttpResponse(200, null, object);
        }
        
        public static HttpResponse ok(String message,Object object) {
            return new HttpResponse(200, message, object);
        }
        
        public static HttpResponse error(Integer status, String message) {
            return new HttpResponse(500, message, null);
        }
        
        public static HttpResponse error(String message) {
            return new HttpResponse(500, message, null);
        }
        
        public static HttpResponse error(String message,Object object) {
            return new HttpResponse(500, message, object);
        }
        
        
        protected HttpResponse() {
            super();
        }
        
        private HttpResponse(Integer status, String message, Object object) {
            super();
            this.status = status;
            this.message = message;
            this.object = object;
        }
        public Integer getStatus() {
            return status;
        }
        public void setStatus(Integer status) {
            this.status = status;
        }
        public String getMessage() {
            return message;
        }
        public void setMessage(String message) {
            this.message = message;
        }
        public Object getObject() {
            return object;
        }
        public void setObject(Object object) {
            this.object = object;
        }
    }

    重點:

    如果mapper沒加@Param("id")注解會報錯找不到參數"id"

    至此MyBatis根據id批量修改數據庫的某字段需求完成!

    MyBatis多條件批量修改

    簡單記錄下

    想要修改一張表,是聯合主鍵,也就是where后兩個以上條件才能唯一確定一條數據。

    如果有唯一鍵,那么foreach中 用in就可以解決。

    現在沒辦法用in,不然 A in (#{})and B in (#{})感覺成笛卡爾了。

    簡單點就是要實現執行多條語句。對update做循環。傳入參數為 List,ATest類中字段A,B為聯合主鍵,修改C的值

    <update id="update" parameterType="java.util.List">
            <foreach collection="list"  item="val" separator=";" open="begin" close=";end;">
                update table_ABC
                <set>
                    <if test="val.C!= null">C = #{val.C},</if>
                </set>
                where A=#{val.A} and B= #{val.B}
            </foreach>
    
        </update>

    執行出來效果為:

    begin 
    update table_ABC set C = '2' where A = '1' and B= '1';
    update table_ABC set C = '2' where A = '1' and B= '2';
    update table_ABC set C = '4' where A = '3' and B= '2';
    end;

    這里使用的數據庫為oracle,oracle執行認為begin和end之前為一條語句

    當然,也可以用or 的形式拼接,不過還沒測試。

    網上查有的說是mysql數據庫 mybatis一次執行一條語句。支持多條,可以MySQL連接數據庫時,添加語句:“allowMultiQueries=true”

    作用:

    1.可以在sql語句后攜帶分號,實現多語句執行。

    2.可以執行批處理,同時發出多個SQL語句。

    “MyBatis怎么根據條件批量修改字段”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    自贡市| 门头沟区| 麻江县| 扬州市| 九寨沟县| 巍山| 比如县| 微山县| 巫溪县| 临漳县| 小金县| 孟津县| 周至县| 通渭县| 阜平县| 随州市| 合江县| 庆云县| 宽甸| 安宁市| 河曲县| 绥棱县| 思南县| 中卫市| 柯坪县| 内丘县| 青海省| 巴林右旗| 浮梁县| 濉溪县| 长垣县| 玉环县| 岢岚县| 阳曲县| 宽城| 师宗县| 万宁市| 光泽县| 隆德县| 黎平县| 麻城市|