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.mzph.cn/news/273544.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

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…

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…

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;字符流处理类负责将外部的…

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;通常远超出你的想象&…

SQLSERVER中如何忽略索引提示

SQLSERVER中如何忽略索引提示 原文:SQLSERVER中如何忽略索引提示SQLSERVER中如何忽略索引提示 当我们想让某条查询语句利用某个索引的时候&#xff0c;我们一般会在查询语句里加索引提示&#xff0c;就像这样 SELECT id,name from TB with (index(IX_xttrace_bal)) where bal…

[016]转--C++拷贝构造函数详解

一. 什么是拷贝构造函数 首先对于普通类型的对象来说&#xff0c;它们之间的复制是很简单的&#xff0c;例如&#xff1a; [c-sharp] view plaincopy int a 100; int b a; 而类对象与普通对象不同&#xff0c;类对象内部结构一般较为复杂&#xff0c;存在各种成员变量。下…

自定义GrildView实现单选功能

首先看实现功能截图&#xff0c;这是一个自定义Dialog,并且里面内容由GrildView 绑定数据源&#xff0c;实现类似单选功能。 首先自定义Dialog&#xff0c;绑定数据源 自定义Dialog弹出框大小方法 最主要实现的就是点击颜色切换的功能&#xff0c;默认GrildView的每一项都是蓝色…

最大权闭合图hdu3996

定义&#xff1a;最大权闭合图&#xff1a;是有向图的一个点集&#xff0c;且该点集的所有出边都指向该集合。即闭合图内任意点的集合也在改闭合图内&#xff0c;给每个点分配一个点权值Pu&#xff0c;最大权闭合图就是使闭合图的点权之和最大。 最小割建边方式&#xff1a;源点…

非监督学习的单层网络分析

这篇博客对应的是Andrew.Ng的那篇文章&#xff1a;An Analysis o f Single-Layer Networks in Unsupervised Feature Learning&#xff0c;文章的主要目的是讨论receptive field size&#xff0c;number of hidden nodes&#xff0c; step-stride以及whitening在对卷积网络模型…

poj3009 Curling 2.0 深搜

PS&#xff1a;以前看到题目这么长就没写下去了。今天做了半天&#xff0c;没做出来。准备看题解&#xff0c;打开了网站都忍住了&#xff0c;最后还是靠自己做出来的。算是一点进步吧。 分析&#xff1a; 题目的意思没明白或者理解有偏差都没办法做题。看样例3和样例4&#xf…

iOS iphone屏幕分析(岂止而大)

在写本文前&#xff0c;我必须介绍几点内容&#xff1a;第一点&#xff1a;屏幕上面显示的内容多少和屏幕的尺寸大小无关第二点&#xff1a;屏幕上面显示的内容多少和分辨率完全无关第三点&#xff1a;屏幕上面显示的内容多少和屏幕尺寸、屏幕分辨率、PPI等都是无关的那到底什么…

【随笔】Win7下GVIM的安装与配置

针对各种语言的编辑器千千万万&#xff0c;最好的就是最适合自己的&#xff0c;这句话一点没错。 偶然间&#xff0c;需要在Windows上编写代码&#xff0c;MyEclipse等太大&#xff0c;完全没有必要&#xff0c;所以就想起来了vim这个神器。个子小&#xff0c;功能强&#xff0…

[java] 虚拟机(JVM)底层结构详解[转]

[java] 虚拟机(JVM)底层结构详解[转] 本文来自&#xff1a;曹胜欢博客专栏。转载请注明出处&#xff1a;http://blog.csdn.net/csh624366188 在以前的博客里面&#xff0c;我们介绍了在java领域中大部分的知识点&#xff0c;从最基础的java最基本语法到SSH框架。这里面应该包含…

用计算器计算“异或CRC”

再计算器上输入以下数字&#xff0c;每输入一个数字&#xff0c;按一下“Xor” 转载于:https://www.cnblogs.com/YangBinChina/p/4164513.html

程序猿是如何解决SQLServer占CPU100%的

文章目录 遇到的问题使用SQLServer Profiler监控数据库 SQL1&#xff1a;查找最新的30条告警事件SQL2&#xff1a;获取当前的总报警记录数有哪些SQL语句会导致CPU过高&#xff1f;查看SQL的查询计划 选择top记录时&#xff0c;尽量为order子句的字段建立索引查看SQL语句CPU高的…

基于纤程(Fiber)实现C++异步编程库(一):原理及示例

纤程&#xff08;Fiber&#xff09;和协程&#xff08;coroutine&#xff09;是差不多的概念&#xff0c;也叫做用户级线程或者轻线程之类的。Windows系统提供了一组API用户创建和使用纤程&#xff0c;本文中的库就是基于这组API实现的&#xff0c;所以无法跨平台使用&#xff…

C语言 将整数写入内存指定的连续字节单元中

将整数数组写入0x40003000开始的连续10个字节内存单元中&#xff0c;注意unsigned char *指向一个字节&#xff0c;而int *指向1个字&#xff08;4个字&#xff09;&#xff0c;但是可以把字中存储的整数放入字节单元中&#xff0c;只要不超过表示的范围&#xff0c;注意虽然un…

多项目开发下的dll文件管理

阅读目录&#xff1a;DS01&#xff1a;为什么要对生成的dll文件进行管理&#xff1f;DS02&#xff1a;首先介绍以下两个DOS命令DS03&#xff1a;第一种实现方法&#xff08;xcopy&#xff09;DS04&#xff1a;第二种实现方法&#xff08;attrib&#xff09;DS05&#xff1a;分享…