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是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个 ...
随机推荐
- 【vue iview】项目 win10 放在C盘 经常npm install不成功,就是因为 权限问题,把代码目录放到D盘就没事了。
[vue iview]项目 win10 放在C盘 经常npm install不成功,就是因为 权限问题,把代码目录放到D盘就没事了.
- 在DataGridView控件中隔行换色
实现效果: 知识运用: DataGridViewRow类的公共属性DefaultCellStyle的BackColor属性 public Color BackColor {get; set;} 实现代 ...
- webpack配置指南
Webpack已经出来很久了,相关的文章也有很多,然而比较完整的例子却不是很多,让很多新手不知如何下脚,下脚了又遍地坑 说实话,官方文档是蛮乱的,而且有些还是错的错的..很多配置问题只有爬过坑才知道 ...
- 【上下界网络流 二分】bzoj2406: 矩阵
感觉考试碰到上下界网络流也还是写不来啊 Description Input 第一行两个数n.m,表示矩阵的大小. 接下来n行,每行m列,描述矩阵A. 最后一行两个数L,R. Output 第一行,输出 ...
- urllib、requests库整理
- LeetCode(128) Longest Consecutive Sequence
题目 Given an unsorted array of integers, find the length of the longest consecutive elements sequence ...
- LeetCode(151) Reverse Words in a String
题目 Given an input string, reverse the string word by word. For example, Given s = "the sky is b ...
- urlopen SSL证书验证
错误描述: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777) 解决方法 ...
- servlet 作用
什么是Servlet Servlet是一个Java编写的程序,此程序是基于Http协议的,在服务器端运行的(如tomcat),是按照Servlet规范编写的一个Java类. 在BS架构中,早期的Web ...
- SPOJ COT2 Count on a tree II 树上莫队算法
题意: 给出一棵\(n(n \leq 4 \times 10^4)\)个节点的树,每个节点上有个权值,和\(m(m \leq 10^5)\)个询问. 每次询问路径\(u \to v\)上有多少个权值不 ...