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的更多相关文章

  1. Mysql 用户 创建与删除(基础1)

    Mysql是最流行的关系型数据库管理系统之一,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个 ...

随机推荐

  1. 【vue iview】项目 win10 放在C盘 经常npm install不成功,就是因为 权限问题,把代码目录放到D盘就没事了。

    [vue iview]项目 win10 放在C盘 经常npm install不成功,就是因为 权限问题,把代码目录放到D盘就没事了.

  2. 在DataGridView控件中隔行换色

    实现效果: 知识运用: DataGridViewRow类的公共属性DefaultCellStyle的BackColor属性 public Color BackColor {get; set;} 实现代 ...

  3. webpack配置指南

    Webpack已经出来很久了,相关的文章也有很多,然而比较完整的例子却不是很多,让很多新手不知如何下脚,下脚了又遍地坑 说实话,官方文档是蛮乱的,而且有些还是错的错的..很多配置问题只有爬过坑才知道 ...

  4. 【上下界网络流 二分】bzoj2406: 矩阵

    感觉考试碰到上下界网络流也还是写不来啊 Description Input 第一行两个数n.m,表示矩阵的大小. 接下来n行,每行m列,描述矩阵A. 最后一行两个数L,R. Output 第一行,输出 ...

  5. urllib、requests库整理

  6. LeetCode(128) Longest Consecutive Sequence

    题目 Given an unsorted array of integers, find the length of the longest consecutive elements sequence ...

  7. 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 ...

  8. urlopen SSL证书验证

    错误描述: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777) 解决方法 ...

  9. servlet 作用

    什么是Servlet Servlet是一个Java编写的程序,此程序是基于Http协议的,在服务器端运行的(如tomcat),是按照Servlet规范编写的一个Java类. 在BS架构中,早期的Web ...

  10. SPOJ COT2 Count on a tree II 树上莫队算法

    题意: 给出一棵\(n(n \leq 4 \times 10^4)\)个节点的树,每个节点上有个权值,和\(m(m \leq 10^5)\)个询问. 每次询问路径\(u \to v\)上有多少个权值不 ...