1. package com.test.dao;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.PreparedStatement;
  5. import java.sql.ResultSet;
  6. import java.sql.SQLException;
  7. import org.apache.tomcat.jdbc.pool.DataSource;
  8. import org.slf4j.Logger;
  9. import org.slf4j.LoggerFactory;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11.  
  12. public abstract class AbstractBaseDataSourceDao {
  13. private static final Logger LOGGER=LoggerFactory.getLogger("AbstractBaseDataSourceDao");
  14. protected Connection conn=null;
  15. protected PreparedStatement ps=null;
  16. protected ResultSet rst=null;
  17. @Autowired
  18. protected DataSource dataSource;
  19. /**
  20. * 设置dataSource
  21. */
  22. public void setDataSource(DataSource dataSource) {
  23. this.dataSource = dataSource;
  24. try {
  25. conn=dataSource.getConnection();
  26. } catch (SQLException e) {
  27. LOGGER.error("数据库连接异常:", e.getMessage());
  28. }
  29. }
  30. }
  1. package com.test.dao;
  2.  
  3. import java.util.List;
  4.  
  5. import org.springframework.transaction.annotation.Transactional;
  6.  
  7. import com.test.model.User;
  8.  
  9. public interface IUserDao {
  10. @Transactional
  11. public boolean add(User user);
  12. public boolean add(List<User> lists);
  13. public boolean update(User user);
  14. public boolean delete(int id);
  15. public void delete(List<Integer> lists);
  16. public User findById(int id);
  17. public User findByName(String name);
  18. public List<User> findAllUser();
  19. }
  1. package com.test.dao.imp;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.PreparedStatement;
  5. import java.sql.ResultSet;
  6. import java.sql.SQLException;
  7. import java.util.List;
  8. import org.apache.tomcat.jdbc.pool.DataSource;
  9. import org.slf4j.Logger;
  10. import org.slf4j.LoggerFactory;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.dao.DataAccessException;
  13. import org.springframework.data.redis.connection.RedisConnection;
  14. import org.springframework.data.redis.core.RedisCallback;
  15. import org.springframework.data.redis.serializer.RedisSerializer;
  16. import com.test.dao.AbstractBaseDataSourceDao;
  17. import com.test.dao.IUserDao;
  18. import com.test.model.User;
  19.  
  20. public class UserDao extends AbstractBaseDataSourceDao implements IUserDao {
  21. private static final Logger LOGGER = LoggerFactory.getLogger("UserDao");
  22.  
  23. public int executeUpdate(String sql, Object[] args) {
  24. try {
  25. ps = conn.prepareStatement(sql);
  26. if (args != null && args.length > 0) {
  27. for (int i = 0; i < args.length; i++) {
  28. ps.setObject(i + 1, args[i]);
  29. }
  30. }
  31. int rows = ps.executeUpdate();
  32. if (rows > 0) {
  33. conn.commit();
  34. return rows;
  35. }
  36. } catch (SQLException e) {
  37. LOGGER.error("执行增删改sql异常:", e.getMessage());
  38. }
  39. return 0;
  40. }
  41.  
  42. public ResultSet executeQuery(String sql, Object[] args) {
  43. try {
  44. ps = conn.prepareStatement(sql);
  45. if (args != null && args.length > 0) {
  46. for (int i = 0; i < args.length; i++) {
  47. ps.setObject(i + 1, args[i]);
  48. }
  49. }
  50. rst = ps.executeQuery();
  51. } catch (SQLException e) {
  52. LOGGER.error("执行查询sql异常:", e.getMessage());
  53. }
  54. return rst;
  55. }
  56.  
  57. public void closeAll(Connection conn, PreparedStatement ps, ResultSet rst) {
  58. try {
  59. if (rst != null) {
  60. rst.close();
  61. }
  62. if (ps != null) {
  63. ps.close();
  64. }
  65. if (conn != null) {
  66. conn.close();
  67. }
  68. } catch (SQLException e) {
  69. LOGGER.error("关闭数据库连接异常:", e.getMessage());
  70. }
  71. }
  72.  
  73. @Override
  74. public boolean add(final User user) {
  75. String sql = "insert into users(uname, upasswd) values(?,?);";
  76. String[] args = new String[] { user.getUname(), user.getUpasswd() };
  77. int row = executeUpdate(sql, args);
  78. if (row <= 0) {
  79. LOGGER.error("数据行不存在, 用户 = " + user.getUname());
  80. return false;
  81. } else {
  82. return true;
  83. }
  84.  
  85. }
  86.  
  87. @Override
  88. public boolean add(final List<User> lists) {
  89. // TODO Auto-generated method stub
  90. return false;
  91. }
  92.  
  93. @Override
  94. public boolean update(final User user) {
  95. // TODO Auto-generated method stub
  96. return false;
  97. }
  98.  
  99. @Override
  100. public boolean delete(int id) {
  101. // TODO Auto-generated method stub
  102. return false;
  103. }
  104.  
  105. @Override
  106. public void delete(final List<Integer> lists) {
  107. // TODO Auto-generated method stub
  108.  
  109. }
  110.  
  111. @Override
  112. public User findById(int id) {
  113. // TODO Auto-generated method stub
  114. return null;
  115. }
  116.  
  117. @Override
  118. public User findByName(final String name) {
  119. // TODO Auto-generated method stub
  120. return null;
  121. }
  122.  
  123. @Override
  124. public List<User> findAllUser() {
  125. // TODO Auto-generated method stub
  126. return null;
  127. }
  128.  
  129. }
  1. package RedisTest;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import junit.framework.Assert;
  5. import org.junit.Test;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.test.context.ContextConfiguration;
  8. import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
  9. import com.test.dao.IUserDao;
  10. import com.test.model.User;
  11.  
  12. /**
  13. * 测试
  14. */
  15. @ContextConfiguration(locations = {"classpath:config/applicationContext.xml"})
  16. public class RedisTest extends AbstractJUnit4SpringContextTests {
  17.  
  18. @Autowired
  19. private IUserDao userDao;
  20.  
  21. /**
  22. * 新增
  23. */
  24. @Test
  25. public void testAddUser() {
  26. User user = new User();
  27. user.setUname("user1");
  28. user.setUpasswd("java2000_wl1");
  29. boolean result = userDao.add(user);
  30. Assert.assertTrue(result);
  31. }
  32.  
  33. /**
  34. * 批量新增 普通方式
  35. */
  36. @Test
  37. public void testAddUsers1() {
  38. List<User> list = new ArrayList<User>();
  39. for (int i = 10; i < 50000; i++) {
  40. User user = new User();
  41. user.setUname("user"+ i);
  42. user.setUpasswd("java2000_wl"+ i);
  43. list.add(user);
  44. }
  45. long begin = System.currentTimeMillis();
  46. for (User user : list) {
  47. userDao.add(user);
  48. }
  49. System.out.println(System.currentTimeMillis() - begin);
  50. }
  51.  
  52. /**
  53. * 批量新增 pipeline方式
  54. */
  55. @Test
  56. public void testAddUsers2() {
  57. List<User> list = new ArrayList<User>();
  58. for (int i = 50000; i < 100000; i++) {
  59. User user = new User();
  60. user.setUname("user"+ i);
  61. user.setUpasswd("java2000_wl"+ i);
  62. list.add(user);
  63. }
  64. long begin = System.currentTimeMillis();
  65. boolean result = userDao.add(list);
  66. System.out.println(System.currentTimeMillis() - begin);
  67. Assert.assertTrue(result);
  68. }
  69.  
  70. /**
  71. * 修改
  72. */
  73. @Test
  74. public void testUpdate() {
  75. User user = new User();
  76. user.setUname("user1");
  77. user.setUpasswd("new_password");
  78. boolean result = userDao.update(user);
  79. Assert.assertTrue(result);
  80. }
  81. /**
  82. * 获取
  83. */
  84. @Test
  85. public void testGetUserId() {
  86. int id = 4;
  87. User user = userDao.findById(id);
  88. Assert.assertNotNull(user);
  89. Assert.assertEquals(user.getUname(), "java2000_wl1");
  90. }
  91. /**
  92. * 获取
  93. */
  94. @Test
  95. public void testGetUserName() {
  96. String id = "user1";
  97. User user = userDao.findByName(id);
  98. Assert.assertNotNull(user);
  99. Assert.assertEquals(user.getUname(), "java2000_wl1");
  100. }
  101. /**
  102. * 通过key删除单个
  103. */
  104. @Test
  105. public void testDelete() {
  106. int key = 4;
  107. userDao.delete(key);
  108. }
  109.  
  110. /**
  111. * 批量删除
  112. */
  113. @Test
  114. public void testDeletes() {
  115. List<Integer> list = new ArrayList<Integer>();
  116. for (int i = 0; i < 100000; i++) {
  117. list.add(i);
  118. }
  119. userDao.delete(list);
  120. }
  121.  
  122. /**
  123. * 设置userDao
  124. * @param userDao the userDao to set
  125. */
  126. public void setUserDao(IUserDao userDao) {
  127. this.userDao = userDao;
  128. }
  129. }

23we的更多相关文章

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

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

随机推荐

  1. xcdatamodel的实质

    修改后缀名为zip或者其它,可以查看到xcdatamodel是一个描述文件 <?xml version="1.0" encoding="UTF-8" st ...

  2. [大坑]Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR

    报错tensorflow/stream_executor/cuda/cuda_dnn.cc:338] Could not create cudnn handle: CUDNN_STATUS_INTER ...

  3. 如何从Ubuntu 16.04 LTS升级到Ubuntu 18.04 LTS

    可以说非常简单(假设过程顺利!!) 您只需打开Software&Update,进入"Updates"选项卡,然后从“有新版本时通知我”下拉菜单中选择“适用长期支持版”选项. ...

  4. 实验十二 团队作业8:软件测试与Alpha冲刺

    实验十二 团队作业8:软件测试与Alpha冲刺 实验时间 2018-6-13 Deadline: [6.13-6.19]之间任选连续5天的23:00,以团队随笔博文提交时间为准. 评分标准: 按时交 ...

  5. Bootstrap历练实例:激活导航状态

    激活导航状态 您可以在激活状态的胶囊式导航和列表导航中放置徽章.通过使用 <span class="badge"> 来激活链接,如下面的实例所示: <!DOCTY ...

  6. libnet TCP示例

    [root@TD18 tmp]#gcc -o .c -lnet [root@TD18 tmp]#./ please enter Host address 11.11.11.11 please ente ...

  7. Visual Studio 2017 UTF-8 无 BOM 一站式解决办法

    问题背景:最近捡起C++,使用VS 2017平台.因为以前的编程习惯,喜欢使用UTF-8 无 BOM 的编码格式,好让自己的代码全球通用.但是VS 2017 对这个问题不是很友善.但最终找到了解决办法 ...

  8. centos7重启后/etc/resolv.conf 被还原解决办法

    每次重启服务器后,/etc/resolv.conf文件就被自动还原了,最后发现是被Network Manager修改了. 查看Network Manager服务状态 systemctl status ...

  9. 【Python高级工程师之路】入门+进阶+实战+爬虫+数据分析整套教程

    点击了解更多Python课程>>> 全网最新最全python高级工程师全套视频教程学完月薪平均2万 什么是Python? Python是一门面向对象的编程语言,它相对于其他语言,更加 ...

  10. laravel连接数据库提示mysql_connect() :Connection refused...

    在.env配置文件中填写了正确的数据库连接配置的情况下连接还是出错了,明显提示的不是密码错误,那就看看端口吧, DB_HOST=127.0.0.1 DB_PORT= DB_DATABASE=test ...