23we
package com.test.dao; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.tomcat.jdbc.pool.DataSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; public abstract class AbstractBaseDataSourceDao {
private static final Logger LOGGER=LoggerFactory.getLogger("AbstractBaseDataSourceDao");
protected Connection conn=null;
protected PreparedStatement ps=null;
protected ResultSet rst=null;
@Autowired
protected DataSource dataSource;
/**
* 设置dataSource
*/
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
try {
conn=dataSource.getConnection();
} catch (SQLException e) {
LOGGER.error("数据库连接异常:", e.getMessage());
}
}
}
package com.test.dao;
import java.util.List;
import org.springframework.transaction.annotation.Transactional;
import com.test.model.User;
public interface IUserDao {
@Transactional
public boolean add(User user);
public boolean add(List<User> lists);
public boolean update(User user);
public boolean delete(int id);
public void delete(List<Integer> lists);
public User findById(int id);
public User findByName(String name);
public List<User> findAllUser();
}
package com.test.dao.imp; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import org.apache.tomcat.jdbc.pool.DataSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.core.RedisCallback;
import org.springframework.data.redis.serializer.RedisSerializer;
import com.test.dao.AbstractBaseDataSourceDao;
import com.test.dao.IUserDao;
import com.test.model.User; public class UserDao extends AbstractBaseDataSourceDao implements IUserDao {
private static final Logger LOGGER = LoggerFactory.getLogger("UserDao"); public int executeUpdate(String sql, Object[] args) {
try {
ps = conn.prepareStatement(sql);
if (args != null && args.length > 0) {
for (int i = 0; i < args.length; i++) {
ps.setObject(i + 1, args[i]);
}
}
int rows = ps.executeUpdate();
if (rows > 0) {
conn.commit();
return rows;
}
} catch (SQLException e) {
LOGGER.error("执行增删改sql异常:", e.getMessage());
}
return 0;
} public ResultSet executeQuery(String sql, Object[] args) {
try {
ps = conn.prepareStatement(sql);
if (args != null && args.length > 0) {
for (int i = 0; i < args.length; i++) {
ps.setObject(i + 1, args[i]);
}
}
rst = ps.executeQuery();
} catch (SQLException e) {
LOGGER.error("执行查询sql异常:", e.getMessage());
}
return rst;
} public void closeAll(Connection conn, PreparedStatement ps, ResultSet rst) {
try {
if (rst != null) {
rst.close();
}
if (ps != null) {
ps.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
LOGGER.error("关闭数据库连接异常:", e.getMessage());
}
} @Override
public boolean add(final User user) {
String sql = "insert into users(uname, upasswd) values(?,?);";
String[] args = new String[] { user.getUname(), user.getUpasswd() };
int row = executeUpdate(sql, args);
if (row <= 0) {
LOGGER.error("数据行不存在, 用户 = " + user.getUname());
return false;
} else {
return true;
} } @Override
public boolean add(final List<User> lists) {
// TODO Auto-generated method stub
return false;
} @Override
public boolean update(final User user) {
// TODO Auto-generated method stub
return false;
} @Override
public boolean delete(int id) {
// TODO Auto-generated method stub
return false;
} @Override
public void delete(final List<Integer> lists) {
// TODO Auto-generated method stub } @Override
public User findById(int id) {
// TODO Auto-generated method stub
return null;
} @Override
public User findByName(final String name) {
// TODO Auto-generated method stub
return null;
} @Override
public List<User> findAllUser() {
// TODO Auto-generated method stub
return null;
} }
package RedisTest;
import java.util.ArrayList;
import java.util.List;
import junit.framework.Assert;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
import com.test.dao.IUserDao;
import com.test.model.User; /**
* 测试
*/
@ContextConfiguration(locations = {"classpath:config/applicationContext.xml"})
public class RedisTest extends AbstractJUnit4SpringContextTests { @Autowired
private IUserDao userDao; /**
* 新增
*/
@Test
public void testAddUser() {
User user = new User();
user.setUname("user1");
user.setUpasswd("java2000_wl1");
boolean result = userDao.add(user);
Assert.assertTrue(result);
} /**
* 批量新增 普通方式
*/
@Test
public void testAddUsers1() {
List<User> list = new ArrayList<User>();
for (int i = 10; i < 50000; i++) {
User user = new User();
user.setUname("user"+ i);
user.setUpasswd("java2000_wl"+ i);
list.add(user);
}
long begin = System.currentTimeMillis();
for (User user : list) {
userDao.add(user);
}
System.out.println(System.currentTimeMillis() - begin);
} /**
* 批量新增 pipeline方式
*/
@Test
public void testAddUsers2() {
List<User> list = new ArrayList<User>();
for (int i = 50000; i < 100000; i++) {
User user = new User();
user.setUname("user"+ i);
user.setUpasswd("java2000_wl"+ i);
list.add(user);
}
long begin = System.currentTimeMillis();
boolean result = userDao.add(list);
System.out.println(System.currentTimeMillis() - begin);
Assert.assertTrue(result);
} /**
* 修改
*/
@Test
public void testUpdate() {
User user = new User();
user.setUname("user1");
user.setUpasswd("new_password");
boolean result = userDao.update(user);
Assert.assertTrue(result);
}
/**
* 获取
*/
@Test
public void testGetUserId() {
int id = 4;
User user = userDao.findById(id);
Assert.assertNotNull(user);
Assert.assertEquals(user.getUname(), "java2000_wl1");
}
/**
* 获取
*/
@Test
public void testGetUserName() {
String id = "user1";
User user = userDao.findByName(id);
Assert.assertNotNull(user);
Assert.assertEquals(user.getUname(), "java2000_wl1");
}
/**
* 通过key删除单个
*/
@Test
public void testDelete() {
int key = 4;
userDao.delete(key);
} /**
* 批量删除
*/
@Test
public void testDeletes() {
List<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < 100000; i++) {
list.add(i);
}
userDao.delete(list);
} /**
* 设置userDao
* @param userDao the userDao to set
*/
public void setUserDao(IUserDao userDao) {
this.userDao = userDao;
}
}
23we的更多相关文章
- Mysql 用户 创建与删除(基础1)
Mysql是最流行的关系型数据库管理系统之一,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个 ...
随机推荐
- cookie和session是否可以保存对象
session看了一下,是可以保存对象的.语法很普通,但是cookie的话本身是只能保存string类型的信息的,这就需要先序列化,然后接收的页面反序列化后形成对象调用,为了防止乱码,需要在数据传输的 ...
- 在linux命令行下如何访问网址
1. wget Ubuntu系统自带,会将访问的首页下载到本地 admin@iZj6c9c6vaqj1i0a9j7h78Z:~$ wget www.baidu.com --2019-04-20 17: ...
- javascript日期函数
时间对象是一个我们经常要用到的对象,无论是做时间输出.时间判断等操作时都与这个对象离不开.除开JavaScript中的时间对象外,在VbScript中也有许多的时间对象,而且非常好用.下面还是按照我们 ...
- xpath定位和css定位对比
xpath定位和css定位对比 实际项目中使用较多的是xpath定位和css定位.XPath是XML文档中查找结点的语法,换句话就是通过元素的路径来查找这个元素.xpath比较强大,而css选择器 ...
- 使用struts2实现文件上传与下载功能
这个问题做了两天,在网上找了很多例子,但是还有一些功能没有实现,暂时先把代码贴出来,以后在做这方面的功能时在修改 文件上传: 一开始我在网上找到基于servlet+jsp环境写的文件上传,但是在将页面 ...
- 配置Xcode的Device Orientation、AppIcon、LaunchImage
以下图片指出的 TARGETS→General 面板的信息. 下面我们讲讲根据 APP 需求配置我们的Xcode: 1.设置 Device Orientation,指定 APP 支持设备的方向 ,我们 ...
- Xcode开发技巧
1.Xcode 中的 Code Snippets 默认放在下面的目录中: ~/Library/Developer/Xcode/UserData/CodeSnippets 2.自定义的代码背景颜色和代码 ...
- Slasher Flick-freecodecamp算法题目
Slasher Flick(截断数组) 要求 返回一个数组被截断n个元素后还剩余的元素,截断从索引0开始. 思路 利用.splice(0,howMany)删除数组中索引从0开始的howMany个元素 ...
- 如何用纯 CSS 创作一个方块旋转动画
效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/gjgyWm 可交互视频 ...
- Verilog之语句位置
1.if语句.case语句必须放在always过程语句块中. 2.verilog的系统函数比如:\(display/\)monitor必须放在initial 过程语句块中.这点尚为理解为何,但必须这样 ...