mybatis 2 -常用數據操作

1、寫入數據并獲取自增ID

XML配置:

  <!-- 寫入數據獲取自增ID --><insert id="insertLog"   parameterType="com.mamaguwen.entity.sys_loginlog"  useGeneratedKeys="true" keyProperty="logid">insert into  sys_loginlog  (UserName) values  (#{username}) </insert>

測試代碼:

@Testpublic void insertLog() {sys_loginlog model = new sys_loginlog();model.setIslogin(true);model.setLoginip("127.0.0.1");model.setLogintime(new Date());model.setUsername("rhythmk");int total = loginlog.insertLog(model);System.out.println("影響數據條:" + total);System.out.println("ID:" + model.getLogid());/** 影響數據條:1 ID:4 */}

2、更新數據

  <!-- 更新數據 --><update id="updateLog"   parameterType="com.mamaguwen.entity.sys_loginlog">update sys_loginlog set username=#{username}where LogId=#{logid}</update>
    /** 更新數據*/@Testpublic void updateLog() {sys_loginlog record = new sys_loginlog();record.setLogid(4L);record.setUsername("wangkun");int total = loginlog.updateLog(record);System.out.println("影響數據條:" + total);}

3、返回單個字符串對象:

    <!-- -返回單字段內容 --><select id="selectStringByKey"  resultType="String"  >select   UserName   from  sys_loginlogwhere LogId = #{logid}</select>
    /** 返回當個簡單對象*/@Testpublic void selectStringByKey() {String record = loginlog.selectStringByKey(4);System.out.println("返回的字符串:" + record);}

4、返回List對象

<select id="selectLogList"    resultType="com.mamaguwen.entity.sys_loginlog">select * from  sys_loginlog</select>
    /** 獲取所有用戶日志*/@Testpublic void selectLogList() {List<sys_loginlog> list = loginlog.selectLogList();for (sys_loginlog log : list) {System.out.println(log.getUsername());}}

5、返回List<String> 對象

     <select id="selectUserNameList"    resultType="String">select UserName from  sys_loginlog</select>
    /** 獲取所有用戶名*/@Testpublic void selectUserNameList() {List<String> list = loginlog.selectUserNameList();for (String str : list) {System.out.println(str);}}

6、傳入單個參數

     <select id="selectLogByKey"   resultType="com.mamaguwen.entity.sys_loginlog">select * from  sys_loginlog  Where LogId=#{logid}</select>
    /** 根據主鍵獲取日志*/@Testpublic void selectLogByKey() {sys_loginlog model = loginlog.selectLogByKey(5);String str = String.format("id:%d,username:%s", model.getLogid(),model.getUsername());System.out.println(str);}

7、執行存儲過程:

    <!-- 執行存儲過程 --><select id="callProc"   resultType="String"  ><!-- drop procedure if exists ShowString;CREATE PROCEDURE  ShowString(Str VARCHAR(30))BEGINselect Str as Item;END;CALL  ShowString('rhythmk')-->call  ShowString (#{str})</select>
/** 執行存儲過程*/@Testpublic void callProc() {String str = loginlog.callProc("rhytmk");System.out.println(str);}

8、批量寫入數據

  <!-- 批量執行SQL --><!--  生成SQL:insert into  sys_loginlog (username) values ('a'),('b')--><insert id="insertBatch">insert into  sys_loginlog (username) values<foreach collection="list"  item="item"  index="index"  separator=",">(#{item.username})</foreach></insert>
    /** 批量寫入*/@Testpublic void insertBatch() {List<sys_loginlog> list = new ArrayList<sys_loginlog>();for (int i = 0, j = 10; i < j; i++) {sys_loginlog log = new sys_loginlog();log.setUsername(String.format("wangkun%s", i));list.add(log);}int total = loginlog.insertBatch(list);System.out.println("生成數據條:" + total);}

9、將字符串當參數出入進去

    <select id="selectLogByMap"     parameterType="Map"  resultType="com.mamaguwen.entity.sys_loginlog">select * from sys_loginlogwhere (username=#{username1} or username=#{username2} )</select>
    /** 通過Map傳入參數*/@Testpublic   void   selectLogByMap(){Map<String, String> map=new HashMap<String,String>();map.put("username1", "rhythmk");map.put("username2", "wangkun");List<sys_loginlog> list= loginlog.selectLogByMap(map);for(sys_loginlog model:list){String info=  String.format("id%d,username%s", model.getLogid(),model.getUsername());System.out.println(info);}}

?10、#{}與${}的區別

? ? ?假如數據庫 sys_loginlog表中有username=a,b兩條數據。此時按下面配置文件,我傳入'a','b' ?則無法獲取數據。?

     <select id="selectLogByUserName"     parameterType="Map"  resultType="com.mamaguwen.entity.sys_loginlog">select * from sys_loginlogwhere   username in ( #{username} )</select>

現修改where條件,換成${},那么傳入的參數講直接體會SQL中對應的文本 :

     select * from sys_loginlogwhere   username in ( ${username} )
通過執行上面語句 生成的SQL為 :

select * from sys_loginlog where username in ('a','b')

備注:

? ?表結構:

CREATE TABLE `sys_loginlog` (`LogId` bigint(20) NOT NULL AUTO_INCREMENT,`UserName` varchar(64) COLLATE utf8_bin DEFAULT NULL,`Pwd` varchar(32) COLLATE utf8_bin DEFAULT NULL,`IsLogin` bit(1) DEFAULT NULL,`LoginIp` varchar(64) COLLATE utf8_bin DEFAULT NULL,`LoginTime` datetime DEFAULT NULL,PRIMARY KEY (`LogId`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

?Mapp數據操作接口:

public interface sys_loginlogMapper {/**   寫入日志并返回自增的ID* */int insertLog (sys_loginlog record);/*   更新數據* */int updateLog(sys_loginlog record);/* *   返回當個簡單對象* */String selectStringByKey(@Param("logid") int logId );/** 獲取所有用戶日志* */List<sys_loginlog>  selectLogList();/**  獲取所有用戶名* */List<String> selectUserNameList();/** 根據主鍵獲取日志* */sys_loginlog selectLogByKey(@Param("logid") int logid);/** 執行存儲過程* */String callProc(@Param("str") String str);/** 批量寫入* */int  insertBatch(List<sys_loginlog> list);/**  通過Map傳入參數* */List<sys_loginlog>   selectLogByMap(Map<String, String> map);}

?測試用例代碼:

package com.mamaguwen.dao.test;import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import javax.management.loading.PrivateMLet;import org.apache.commons.lang3.time.DateFormatUtils;
import org.apache.ibatis.annotations.Param;
import org.apache.log4j.Logger;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import com.mamaguwen.dao.sys_loginlogMapper;
import com.mamaguwen.entity.sys_loginlog;@RunWith(value = SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:spring.xml","classpath:spring-mybatis.xml" })
public class TestSysloginlogMapper {private static final Logger logger = Logger.getLogger(Test_SysUser.class);private sys_loginlogMapper loginlog;public sys_loginlogMapper getLoginlog() {return loginlog;}@Autowiredpublic void setLoginlog(sys_loginlogMapper loginlog) {this.loginlog = loginlog;}/** 寫入日志并返回自增的ID*/@Testpublic void insertLog() {sys_loginlog model = new sys_loginlog();model.setIslogin(true);model.setLoginip("127.0.0.1");model.setLogintime(new Date());model.setUsername("rhythmk");int total = loginlog.insertLog(model);System.out.println("影響數據條:" + total);System.out.println("ID:" + model.getLogid());/** 影響數據條:1 ID:4 */}/** 更新數據*/@Testpublic void updateLog() {sys_loginlog record = new sys_loginlog();record.setLogid(4L);record.setUsername("wangkun");int total = loginlog.updateLog(record);System.out.println("影響數據條:" + total);}/** 返回當個簡單對象*/@Testpublic void selectStringByKey() {String record = loginlog.selectStringByKey(4);System.out.println("返回的字符串:" + record);}/** 獲取所有用戶日志*/@Testpublic void selectLogList() {List<sys_loginlog> list = loginlog.selectLogList();for (sys_loginlog log : list) {System.out.println(log.getUsername());}}/** 獲取所有用戶名*/@Testpublic void selectUserNameList() {List<String> list = loginlog.selectUserNameList();for (String str : list) {System.out.println(str);}}/** 根據主鍵獲取日志*/@Testpublic void selectLogByKey() {sys_loginlog model = loginlog.selectLogByKey(5);String str = String.format("id:%d,username:%s", model.getLogid(),model.getUsername());System.out.println(str);}/** 執行存儲過程*/@Testpublic void callProc() {String str = loginlog.callProc("rhytmk");System.out.println(str);}/** 批量寫入*/@Testpublic void insertBatch() {List<sys_loginlog> list = new ArrayList<sys_loginlog>();for (int i = 0, j = 10; i < j; i++) {sys_loginlog log = new sys_loginlog();log.setUsername(String.format("wangkun%s", i));list.add(log);}int total = loginlog.insertBatch(list);System.out.println("生成數據條:" + total);}/** 通過Map傳入參數*/@Testpublic   void   selectLogByMap(){Map<String, String> map=new HashMap<String,String>();map.put("username1", "rhythmk");map.put("username2", "wangkun");List<sys_loginlog> list= loginlog.selectLogByMap(map);for(sys_loginlog model:list){String info=  String.format("id%d,username%s", model.getLogid(),model.getUsername());System.out.println(info);}}
}
View Code

?

轉載于:https://www.cnblogs.com/rhythmK/p/4050184.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/273544.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/273544.shtml
英文地址,請注明出處:http://en.pswp.cn/news/273544.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring常用的的注解對應xml配置詳解

Component(value"")注解&#xff1a;組件 標記在類上&#xff0c;也可以放在接口上注解作用&#xff1a;把AccountDao實現類對象交由Spring IOC容器管理 相當于XML配置文件中的Bean標簽 <bean id"userAnnonMapper" class"com.spring.mapper.User…

安卓模擬器bluestacks mac地址修改教程

http://szmars2008.blog.163.com/blog/static/118893702201373181349348/ 轉載于:https://www.cnblogs.com/prayer521/p/4069037.html

Docker 搭建 ELK 日志系統,并通過 Kibana 查看日志

Docker 搭建 ELK 日志系統,并通過 Kibana 查看日志 docker-compose.yml version: 3 services:elasticsearch:image: elasticsearch:7.7.0 #鏡像container_name: elasticsearch #定義容器名稱restart: always #開機啟動&#xff0c;失敗也會一直重啟environment:- "cl…

蟠桃記

Problem Description 喜歡西游記的同學肯定都知道悟空偷吃蟠桃的故事&#xff0c;你們一定都覺得這猴子太鬧騰了&#xff0c;其實你們是有所不知&#xff1a;悟空是在研究一個數學問題&#xff01; 什么問題&#xff1f;他研究的問題是蟠桃一共有多少個&#xff01; 不過&#…

Spring 定時任務動態管理

管理 Spring 中定時任務 pom.xml <properties><hutool.version>5.6.6</hutool.version><lombok.version>1.18.20</lombok.version><spring-boot.web.version>2.2.10.RELEASE</spring-boot.web.version> </properties><de…

高效率Oracle SQL語句

1、Where子句中的連接順序&#xff1a; ORACLE采用自下而上的順序解析WHERE子句。 根據這個原理&#xff0c;表之間的連接必須寫在其他WHERE條件之前&#xff0c; 那些可以過濾掉最大數量記錄的條件必須寫在WHERE子句的末尾。 舉例&#xff1a; (低效) select ... from table1…

RabbitMQ Management:Management API returned status code 500

錯誤顯示&#xff1a; 解決方案&#xff1a; 因為是使用docker 容器安裝的&#xff0c;所有需要進入容器 docker exec -it rabbitmq /bin/bash進入目錄 cd /etc/rabbitmq/conf.d/執行命令 echo management_agent.disable_metrics_collector false > management_agent.dis…

Android JNI和NDK學習(5)--JNI分析API

Java類型和本地類型對應 在如下情況下&#xff0c;需要在本地方法中應用java對象的引用&#xff0c;就會用到類型之間的轉換&#xff1a; java方法里面將參數傳入本地方法&#xff1b;在本地方法里面創建java對象&#xff1b;在本地方法里面return結果給java程序。Java基本類型…

RabbitMq 消費失敗,重試機制

方案一&#xff1a; 本地消息表 定時任務 本地消息表&#xff1a;主要用于存儲 業務數據、交換機、隊列、路由、次數 定時任務&#xff1a;定時掃描本地消息表&#xff0c;重新給業務隊列投遞消息。 具體思路&#xff1a;業務隊列消費失敗時&#xff0c;把 業務數據、交換機、…

Android常用的工具類

主要介紹總結的Android開發中常用的工具類&#xff0c;大部分同樣適用于Java。目前包括HttpUtils、DownloadManagerPro、ShellUtils、PackageUtils、 PreferencesUtils、JSONUtils、FileUtils、ResourceUtils、StringUtils、 ParcelUtils、RandomUtils、ArrayUtils、ImageUtils…

0. Spring 基礎

BeanDefinition BeanDefinition 表示 Bean 定義&#xff1a; Spring根據BeanDefinition來創建Bean對象&#xff1b;BeanDefinition有很多的屬性用來描述Bean&#xff1b;BeanDefiniton是Spring中非常核心的概念。BeanDefiniton中重要的屬性&#xff1a; a. beanClass&#xf…

1. Spring 源碼:Spring 解析XML 配置文件,獲得 Bena 的定義信息

通過 Debug 運行 XmlBeanDefinitionReaderTests 類的 withFreshInputStream() 的方法&#xff0c;調試 Spring 解析 XML 配置文件&#xff0c;獲得 Bean 的定義。 大體流程可根據序號查看&#xff0c;xml 配置文件隨便看一眼&#xff0c;不用過多在意。 <?xml version&qu…

c++ 讀取文件 最后一行讀取了兩次

用ifstream的eof()&#xff0c;竟然讀到文件最后了&#xff0c;判斷eof還為false。網上查找資料后&#xff0c;終于解決這個問題。 參照文件&#xff1a;http://tuhao.blogbus.com/logs/21306687.html 在使用C/C讀文件的時候&#xff0c;一定都使用過eof&#xff08;&#xff0…

java中的io系統詳解(轉)

Java 流在處理上分為字符流和字節流。字符流處理的單元為 2 個字節的 Unicode 字符&#xff0c;分別操作字符、字符數組或字符串&#xff0c;而字節流處理單元為 1 個字節&#xff0c;操作字節和字節數組。 Java 內用 Unicode 編碼存儲字符&#xff0c;字符流處理類負責將外部的…

js獲取字符串最后一個字符代碼

方法一&#xff1a;運用String對象下的charAt方法 charAt() 方法可返回指定位置的字符。 代碼如下 復制代碼 str.charAt(str.length – 1) 請注意&#xff0c;JavaScript 并沒有一種有別于字符串類型的字符數據類型&#xff0c;所以返回的字符是長度為 1 的字符串 方法二&#…

Unity3D Shader入門指南(二)

關于本系列 這是Unity3D Shader入門指南系列的第二篇&#xff0c;本系列面向的對象是新接觸Shader開發的Unity3D使用者&#xff0c;因為我本身自己也是Shader初學者&#xff0c;因此可能會存在錯誤或者疏漏&#xff0c;如果您在Shader開發上有所心得&#xff0c;很歡迎并懇請您…

JVM:如何分析線程堆棧

英文原文&#xff1a;JVM: How to analyze Thread Dump 在這篇文章里我將教會你如何分析JVM的線程堆棧以及如何從堆棧信息中找出問題的根因。在我看來線程堆棧分析技術是Java EE產品支持工程師所必須掌握的一門技術。在線程堆棧中存儲的信息&#xff0c;通常遠超出你的想象&…

一個工科研究生畢業后的職業規劃

http://blog.csdn.net/wojiushiwo987/article/details/8592359一個工科研究生畢業后的職業規劃 [wojiushiwo987個人感觸]:說的很誠懇&#xff0c;對于馬上面臨畢業的我很受用&#xff0c;很有啟發。有了好的職業生涯規劃&#xff0c;才有了前進的方向和動力&#xff0c;才能…

SQLSERVER中如何忽略索引提示

SQLSERVER中如何忽略索引提示 原文:SQLSERVER中如何忽略索引提示SQLSERVER中如何忽略索引提示 當我們想讓某條查詢語句利用某個索引的時候&#xff0c;我們一般會在查詢語句里加索引提示&#xff0c;就像這樣 SELECT id,name from TB with (index(IX_xttrace_bal)) where bal…

JavaScript——以簡單的方式理解閉包

閉包&#xff0c;在一開始接觸JavaScript的時候就聽說過。首先明確一點&#xff0c;它理解起來確實不復雜&#xff0c;而且它也非常好用。那我們去理解閉包之前&#xff0c;要有什么基礎呢&#xff1f;我個人認為最重要的便是作用域&#xff08;lexical scope&#xff09;&…