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是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个 ...
随机推荐
- UVA 714 Copying Books 抄书 (二分)
题意:把一个包含m个正整数的序列划分成k个非空的连续子序列.使得所有连续子序列的序列和Si的最大值尽量小. 二分,每次判断一下当前的值是否满足条件,然后修改区间.注意初始区间的范围,L应该为所有正整数 ...
- Spark Job调优(Part 1)
原文链接:https://wongxingjun.github.io/2016/05/11/Spark-Job%E8%B0%83%E4%BC%98-Part-1/ Spark应用的执行效率是所有程序员 ...
- 线程的sleep方法
- Python01 VSCode开发环境和入门程序
1.Python的下载和安装 最新版本python3.7.3 https://www.python.org/downloads/release/python-373/ web-based: 在线安装包 ...
- leetcode-10-basic
35. Search Insert Position Given a sorted array and a target value, return the index if the target i ...
- jubeeeeeat(网络流)
jubeeeeeat 总时间限制: 1000ms 内存限制: 256000kB 描述 众所周知,LZF很喜欢打一个叫Jubeat的游戏.这是个音乐游戏,游戏界面是4×4的方阵,会根据音乐节奏要求玩 ...
- BZOJ 4244: 邮戳拉力赛
转化为括号序列DP 注意边界 #include<cstdio> #include<algorithm> #define rep(i,x,y) for (int i=x; i&l ...
- BZOJ 5441: [Ceoi2018]Cloud computing
背包 #include<cstdio> #include<algorithm> using namespace std; int n,m,Len; long long F[2] ...
- clr(Windows 运行时和公共语言运行时)
Windows 运行时 编译器使用 COM 引用计数机制来确定对象是否不再使用并可以删除. 因为从 Windows 运行时接口派生的对象实际上是 COM 对象,所以这是可行的. 在创建或复制对象时 ...
- day08 多线程socket 编程,tcp粘包处理
复习下socket 编程的步骤: 服务端: 1 声明socket 实例 server = socket.socket() #括号里不写 默认地址簇使用AF_INET 即 IPv4 ...