SSM之Mybatis查詢以及批量操作
這篇文章是在我的SpringMVC前後端資料互動基礎上把資料庫環節打通,主要涉及mybatis的查詢(傳多個引數),批量刪除,新增,修改,資料庫是MySQL,註釋很詳細,直接看程式碼即可:
JSP
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>mybatis測試頁面</title> <script type="text/javascript" src="${pageContext.request.contextPath}/static/jquery/jquery-1.9.1.min.js"></script> <script src="${pageContext.request.contextPath}/static/bootstrap-3.3.5/js/bootstrap.min.js"></script> <link rel="stylesheet" href="${pageContext.request.contextPath}/static/bootstrap-3.3.5/css/bootstrap-theme.css"></link> <link rel="stylesheet" href="${pageContext.request.contextPath}/static/bootstrap-3.3.5/css/bootstrap.css" type="text/css"></link> <link rel="stylesheet" href="${pageContext.request.contextPath}/static/bootstrap-3.3.5/css/bootstrap.min.css" type="text/css"></link> <script type="text/javascript"> $(document).ready(function() { // }); </script> </head> <body> <br /> <button type="button" onclick="test()">傳送按鈕</button> <p></p> <p>-----------1.條件(模糊)查詢,2.一對一,一對多,多對多查詢,2.批量刪除,批量修改,批量新增,4.分頁查詢------------ <p> <p>--------------------------------------------------------------------------------------------------------------------------------------------------</p> <p>查詢結果集------:</p> <p id="data"></p> <p>---批量刪除---</p> <div> <!-- 複選框,批量刪除demo演示--> <label class="checkbox-inline"> <input type="checkbox" name="deleteCheckBox" id="inlineCheckbox1" value="11"> 選項 1 </label> <label class="checkbox-inline"> <input type="CheckBox" name="deleteCheckBox" id="inlineCheckbox2" value="22"> 選項 2 </label> <label class="checkbox-inline"> <input type="CheckBox" name="deleteCheckBox" id="inlineCheckbox3" value="33"> 選項 3 </div> <!-- 建立表指令碼 --> <!--CREATE TABLE users ( id int(5) NOT NULL auto_increment, name varchar(20)NOT NULL, PRIMARY KEY (`id`) )charset utf8 collate utf8_general_ci; --> <script> function test() { //單個引數查詢 /* $.ajax({ type : 'post', url : "${pageContext.request.contextPath}/mybatis/queryByAge", data:{age:"28"}, dataType : "json", success : function(data) { console.log(data); //JSON.stringify(data) $("#data").text(JSON.stringify(data)); }, error : function() { alert("查詢失敗"); } }); */ //多個引數查詢 //1.用註解 /* $.ajax({ type : 'post', url : "${pageContext.request.contextPath}/mybatis/queryEmp", data:{queryAge:"28",queryNme:"李大嘴",deptno:"20"}, dataType : "json", success : function(data) { console.log(data); $("#data").text(JSON.stringify(data)); }, error : function() { alert("查詢失敗"); } }); */ //2.用map /* $.ajax({ type : 'post', url : "${pageContext.request.contextPath}/mybatis/queryEmpWithMapParam", data:{queryAge:"28",queryNme:"李大嘴",deptno:"20"}, dataType : "json", success : function(data) { console.log(data); $("#data").text(JSON.stringify(data)); }, error : function() { alert("查詢失敗"); } }); */ //插入資料,主鍵自增 /* var jsonObj = { "empAge" : "111", "empName" : "卡麗熙", "deptNo" : "12138" }; $.ajax({ type : 'post', url : '${pageContext.request.contextPath }/mybatis/addEmp', contentType : 'application/json;charset=utf-8',//指定為json型別,這個屬性是配合註解@RequestBody使用的 //資料格式是json串 data : JSON.stringify(jsonObj), dataType : "json", success : function(data) {//返回json結果 console.log(data)//插入成功列印數字 1 alert("成功"); } }); */ //批量刪除資料 /* var checkBoxArray=[]; $("input[name='deleteCheckBox']:checked").each(function () { checkBoxArray.push(this.value) }); $.ajax({ type : 'post', url : '${pageContext.request.contextPath }/mybatis/deleteBatch', traditional : true,//注意,必須要有個設定否則傳遞陣列報400錯誤。預設為false深度序列化,在此改為true data : { "array" : checkBoxArray }, success : function(data) {//返回json結果 console.log(data)//插入成功列印數字 1 alert("批量刪除成功"); }, error : function() { alert("查詢失敗"); } }); */ //批量新增 /* var empObjList=[]; var emp1={ "empAge" : "1111", "empName" : "布蘭", "deptNo" : "1" }; var emp2={ "empAge" : "2222", "empName" : "艾麗婭", "deptNo" : "2" }; var emp3={ "empAge" : "3333", "empName" : "羅伯", "deptNo" : "3" } empObjList.push(emp1); empObjList.push(emp2); empObjList.push(emp3); $ .ajax({ type : 'post', url : '${pageContext.request.contextPath }/mybatis/addEmpByBatch', contentType : 'application/json;charset=utf-8',//指定為json型別 //資料格式是json串,多個物件用[]包裝 data : JSON.stringify(empObjList), success : function(data) { console.log(data); alert("批量新增成功"); }, error : function() { alert("失敗"); } }); */ //批量修改 var empObjList=[]; var emp1={ "empAge" : "15", "empName" : "布蘭update", "deptNo" : "1" }; var emp2={ "empAge" : "19", "empName" : "艾麗婭update", "deptNo" : "2" }; var emp3={ "empAge" : "26", "empName" : "羅伯update", "deptNo" : "3" } empObjList.push(emp1); empObjList.push(emp2); empObjList.push(emp3); $ .ajax({ type : 'post', url : '${pageContext.request.contextPath }/mybatis/updateEmpByBatch', contentType : 'application/json;charset=utf-8',//指定為json型別 //資料格式是json串,多個物件用[]包裝 data : JSON.stringify(empObjList), success : function(data) { console.log(data.toString()); alert("批量修改成功"); }, error : function() { alert("失敗"); } }); } </script> </body> </html>
controller
直接看mapper和mapper.xmlpackage com.wonders.controller; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.wonders.entity.Emp; import com.wonders.entity.User; import com.wonders.service.EmpService; import com.wonders.service.UserService; /** * AJAX+mybatis+mysql各種情況下查詢 * 傳陣列批量 * 多個引數封裝 (map @param) * @author Administrator * */ @Controller @RequestMapping("/mybatis") public class MyBatisController { @Autowired private EmpService empService; //http://127.0.0.1:8080/ssmmaven/mybatis/showView @RequestMapping("/showView") public ModelAndView showView(){ ModelAndView mv = new ModelAndView(); mv.setViewName("mybatis"); return mv; } /////////////////////////////////////////////////////////////////////////// /** * 單個引數查詢 * @param age * @return */ @RequestMapping("/queryByAge") public @ResponseBody List<Emp> queryByAge(String age){ return empService.selectEmpByAge(age); } //////////////////////////////////////////////////////////////////////////////// /** * 多個引數查詢 * 1.註解 */ @RequestMapping("/queryEmp")// public @ResponseBody Emp queryEmp(String queryAge, String queryNme,Integer deptno){ Emp emp=empService.selectEmp(queryAge, queryNme, deptno); System.out.println("controller:"+emp); return emp; } /** * 2.多個引數用map封裝 */ @RequestMapping("/queryEmpWithMapParam")// public @ResponseBody Emp queryEmpWithMapParam(String queryAge, String queryNme,Integer deptno){ Map<String,Object> map=new HashMap<String,Object>(); map.put("age", queryAge); map.put("name", queryNme); map.put("deptno", deptno); Emp emp=empService.queryEmpWithMapParam(map); System.out.println("controller:"+emp); return emp; } /** * 插入資料 主鍵自增,更新操作同理 */ @RequestMapping("/addEmp")// public @ResponseBody Integer addEmp(@RequestBody Emp emp){ return empService.addEmp(emp); } /** * 批量刪除 */ @SuppressWarnings("null") @RequestMapping(value="/deleteBatch") public @ResponseBody Integer deleteBatch(@RequestParam(value="array") Integer[] array){ if (array == null && array.length <= 0) { return 0; } return empService.deleteEmpBatch(array); } /** * 批量新增 */ @RequestMapping(value="/addEmpByBatch") public @ResponseBody Integer addEmpByBatch(@RequestBody ArrayList<Emp> emps){ return empService.addEmpByBatch(emps); } /** * 批量更新 jdbc.properties檔案新增----allowMultiQueries=true */ @RequestMapping(value="/updateEmpByBatch") public @ResponseBody Integer updateEmpByBatch(@RequestBody ArrayList<Emp> emps){ return empService.updateEmpByBatch(emps); } }
package com.wonders.dao; import java.util.List; import java.util.Map; import org.apache.ibatis.annotations.Param; import com.wonders.entity.Emp; public interface EmpMapper { //單個引數查詢 public List<Emp> selectEmpByAge(String age); //多個引數查詢用@Param註解傳引數 public Emp selectEmp(@Param("age") String queryAge,@Param("name") String queryNme,@Param("deptno") Integer deptno); //多個引數查詢用Map封裝 public Emp queryEmpWithMapParam(Map<String,Object> map); //插入資料主鍵自增 public int addEmp(Emp emp); //checkBox批量刪除 public int deleteEmpBatch(Integer[] array); //批量新增 public int addEmpByBatch(List<Emp> emps); //批量更新 public int updateEmpByBatch(List<Emp> emps); }
<?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.wonders.dao.EmpMapper">
<resultMap id="EmpResultMap" type="com.wonders.entity.Emp">
<id column="ID" property="empId" jdbcType="INTEGER" />
<result column="NAME" property="empName" jdbcType="CHAR" />
<result column="AGE" property="empAge" jdbcType="CHAR" />
<result column="DEPTNO" property="deptNo" jdbcType="INTEGER" />
</resultMap>
<!-- 單個引數查詢 -->
<select id="selectEmpByAge" parameterType="String" resultMap="EmpResultMap">
SELECT * FROM EMP WHERE AGE = #{age}
</select>
<!--多個引數查詢@Param註解封裝-->
<select id="selectEmp" resultMap="EmpResultMap">
SELECT * FROM EMP WHERE AGE = #{age,jdbcType=VARCHAR} AND NAME=#{name,jdbcType=VARCHAR} AND DEPTNO=#{deptno,jdbcType=DECIMAL}
</select>
<!--多個引數查詢map封裝,直接用key就可以取值,parameterType="map"不寫也可以-->
<select id="queryEmpWithMapParam" parameterType="map" resultMap="EmpResultMap">
SELECT * FROM EMP WHERE AGE = #{age,jdbcType=VARCHAR} AND NAME=#{name,jdbcType=VARCHAR} AND DEPTNO=#{deptno,jdbcType=DECIMAL}
</select>
<!--插入資料,主鍵自增 -->
<insert id="addEmp" parameterType="com.wonders.entity.Emp"
useGeneratedKeys="true">
insert into EMP(NAME,AGE,DEPTNO)
values(#{empName},#{empAge},#{deptNo})
</insert>
<!-- 批量刪除 -->
<delete id="deleteEmpBatch" parameterType="Integer">
delete from EMP where
<foreach item="check_value" collection="array" open="ID in ("
separator="," close=")">
#{check_value}
</foreach>
</delete>
<!-- 批量新增-->
<insert id="addEmpByBatch" parameterType="java.util.List" useGeneratedKeys="true">
insert into EMP (NAME,AGE,DEPTNO)
values
<foreach collection="list" item="item" index="index" separator="," >
(#{item.empName},#{item.empAge},#{item.deptNo})
</foreach>
</insert>
<!-- 批量更新 -->
<update id="updateEmpByBatch" parameterType="java.util.List">
<foreach collection="list" item="item" index="index" separator=";">
update EMP
<set >
<if test="item.empName != null" >
NAME = #{item.empName,jdbcType=VARCHAR},
</if>
<if test="item.empAge != null" >
AGE = #{item.empAge,jdbcType=VARCHAR},
</if>
</set>
where DEPTNO = #{item.deptNo,jdbcType=INTEGER}
</foreach>
</update>
</mapper>
資料庫配置檔案注意的地方:
jdbc_url=jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
相關推薦
SSM之Mybatis查詢以及批量操作
這篇文章是在我的SpringMVC前後端資料互動基礎上把資料庫環節打通,主要涉及mybatis的查詢(傳多個引數),批量刪除,新增,修改,資料庫是MySQL,註釋很詳細,直接看程式碼即可: JSP <%@ page language="java" import="ja
Mybatis 新增語句以及批量操作
<insert id="add"> insert into t_watch_log <!-- 新增表字段 --> <trim prefix="(" suffix=")" suffixOver
SSM】之MyBatis查詢快取
為了減輕資料壓力,提高資料庫的效能,我們往往會需要使用快取。MyBatis為我們提供了一級快取和二級快取。 (1)一級快取是SqlSession級別的快取,在操作資料庫的時候需要建立一個SqlSession,其中有一個HashMap,用於儲存快取資料
模擬admin組件自己開發stark組件之搜索和批量操作
btn 但是 相關 操作 else htm actions 函數 自己 搜索相關,搜索的本質就是從數據庫查詢出來的數據過濾 用戶自定義給出過濾條件joker.py list_display = (‘id‘,‘title‘,‘price‘,) show_add_btn =
Java基礎-SSM之mybatis多對一關聯關系
轉載 bat ont -s 否則 tis 聲明 ron 作品 Java基礎-SSM之mybatis多對一關聯關系 作者:尹正傑 版權聲明:原創作品,謝絕轉載!否則將追究法律責任。
資料列表的全選、反選以及批量操作
資料列表的全選、反選以及批量操作 html部分程式碼: 1、全選的checkbox: <input type="checkbox" value="" id="all_columnId"> 2、每條資料前邊的checkbox:<input type="checkbox" name="colu
數據列表的全選、反選以及批量操作
func pro table 刪除按鈕 click 形式 column inpu 部分 數據列表的全選、反選以及批量操作 html部分代碼: 1、全選的checkbox: <input type="checkbox" value="" id="all_columnId
myBatis 配置檔案 批量操作(增、刪、改)操作(資料庫 oracle 11g)
1、更新 <update id="batchUpdate" parameterType="java.util.List"> <foreach collection="list" item="item" index="index" open="
scala 之 Map ,Tuple 以及 Zip 操作
//Map 本身是對映,在生活中應用也非常廣泛 //Tuple 也是scala中非常重要的資料結構,我們使用tuple可以把很多型別不一樣的元素組成一個集合 //Zip 把兩個集合中的元素結合 object Map_Tuple { def main(args: Array[String]): Unit =
Dojo 1.6 最新官方教程: 如何使用dojo.query 進行DOM查詢和批量操作
在本講義中,我們將學到DOM的查詢,以及如何使用dojo.query來方便的查詢並操作DOM節點。 難度:初學者 適用的Dojo 版本: 1.6 作者: Bryan Forbes 譯者: feijia 入門 對DOM程式設計的一個關鍵要素是能夠快速高效的獲
Mybatis外掛和批量操作
擴充套件一個簡單的實現 @Intercepts({ @Signature(type = StatementHandler.class,method = "parameterize",args = java.sql.Statement.class) }) pub
spring整合Mybatis之批量操作
applicationContext-dao.xml中宣告一個可執行批量操作的sqlSession 通過建構函式注入方式:將SqlSessionTemplate交予Spring進行管理,方便後面service層中引用 注意:SqlSessionTemplate的execut
MyBatis一對多的左連線查詢、分步查詢以及插入和刪除操作
例如有兩張表,分別是客戶表和訂單表,一個客戶有多個訂單,一個訂單屬於一個客戶。 兩個實體類Customer Order 如下: package com.itlike.domain; import lombok.Getter; import lombok.Setter; imp
SSM框架之MyBatis(二)--多表查詢及查詢結果對映
使用MyBatis這一強大的框架可以解決很多賦值的問題,其中對於子配置檔案中的小細節有很多需要注意的地方,使用這個框架後主要就是對於配置檔案的編寫和配置。 今天我寫了一個多表查詢,表的基本結構如下: 使用者表t_user:使用者編號uid,賬號account,暱稱nickn
JAVAWEB開發之mybatis詳解(二)——高階對映、查詢快取、mybatis與Spring整合以及懶載入的配置和逆向工程
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "ht
Spring Boot2(十一):Mybatis使用總結(自增長、多條件、批量操作、多表查詢等等)
一、前言 上次用Mybatis還是2017年做專案的時候,已經很久過去了。中途再沒有用過Mybatis。導致現在學習SpringBoot過程中遇到一些Mybatis的問題,以此做出總結(XML極簡模式)。當然只是實用方面的總結,具體就不深究♂了。這裡只總結怎麼用!!! (這次直接跳到十一,是因為中間是Rabb
mybatis深入理解之 # 與 $ 區別以及 sql 預編譯
tcl nec from esql 校驗 ntp code 理解 替換字符串 mybatis 中使用 sqlMap 進行 sql 查詢時,經常需要動態傳遞參數,例如我們需要根據用戶的姓名來篩選用戶時,sql 如下: select * from user where nam
Mybatis查詢select操作
自動完成 分享 簡單 就是 映射 對象的引用 from 配置文件 相關 先看select標簽的屬性: 說幾點: resultType和resultMap都是用來表示結果集的類型的,resultType用於簡單的HashMap或者是簡單的pojo對象,而resultSe
數據庫--MyBatis的(insert,update,delete)三種批量操作
tno open let 項目 sep arraylist htm 子句 由於 轉自:http://blog.csdn.net/starywx/article/details/23268465 前段時間由於項目趕期沒顧上開發過程中的性能問題,現對部分代碼進行優化的過程中發
oracle學習之多表查詢,子查詢以及事務處理
color 1-1 註意事項 員工 列數 .com 外連接 分析 top-n分析 多表查詢的基礎是采用笛卡爾集: 最終的行數 = 表1的行數 * 表2的行數 最終的列數 = 表1的列數 + 表2的列數 過濾笛卡爾集的關鍵是寫連接條件,N張表至少需要N-1個條件。 多表