1.编写测试对象类

package model;

import java.io.Serializable;

/**
* Created by xumao on 2016/12/5.
*/
public class User implements Serializable{
private int id;
private String name;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public User(int id, String name, String password) {
super();
this.id = id;
this.name = name;
this.password = password;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", password=" + password + "]";
}
public User() {
super();
} }

2.加入数据库配置db.properties

#数据库配置
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/xumao?useUnicode=true&characterEncoding=utf8
user=root
password=xumao

3.配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="model,test"></context:component-scan> <!-- 配置外部资源 -->
<context:property-placeholder location="classpath:db.properties"/>
<!-- <util:properties id="dbProperties" location="classpath:db.properties"></util:properties> --> <!-- 配置dbcp连接池 -->
<!-- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSourceFactory"
factory-method="createDataSource">
<constructor-arg ref="dbProperties"/>
</bean> --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" >
<property name="jdbcUrl" value="${url}"></property>
<property name="password" value="${password}"></property>
<property name="user" value="${user}"></property>
<property name="driverClass" value="${driver}"></property>
</bean> <!-- 配置jdbcTamplate -->
<bean id="jdbcTamplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean> </beans>

4.测试类

package test;

import model.User;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper; import javax.sql.DataSource;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List; /**
* Created by xumao on 2016/12/5.
*/
public class TestUser {
ClassPathXmlApplicationContext cx;
JdbcTemplate jdbcTemplate;
{
cx=new ClassPathXmlApplicationContext("springJdbcBean.xml");
//加载配置;
jdbcTemplate=cx.getBean(JdbcTemplate.class);
}
//测试jdbc连接;
@Test
public void testDataSource(){
//引入配置文件中的dataSource,与数据库连接;
DataSource dataSource=(DataSource) cx.getBean("dataSource");
System.out.println(dataSource);
}
//测试jdbcTemplate优化数据库;
@Test
public void jdbcTemplate(){
System.out.println(jdbcTemplate);
}
//测试用户的增加;
@Test
public void userAdd(){
String sql="insert into user values(?,?,?)";
try {
jdbcTemplate.update(sql,8,"测试2","123456");
System.out.println("用户添加成功");
} catch (Exception e) {
System.out.println("用户添加失败");
}
}
//测试用户的删除;
@Test
public void userDel(){
String sql="delete from user where id=?";
try {
jdbcTemplate.update(sql,5);
System.out.println("用户删除成功");
} catch (Exception e) {
System.out.println("用户删除失败");
}
}
//测试用户的修改;
@Test
public void userUpd(){
String sql="update user set name=? where id=?";
try {
jdbcTemplate.update(sql,"关羽",7);
System.out.println("用户修改成功");
} catch (Exception e) {
System.out.println("用户修改失败");
}
}
//测试用户的查询,根据用户的id;
@Test
public void userSelById(){
String sql="select * from user where id=?";
try {
//RowMapper<User> rowMapper=new BeanPropertyRowMapper<User>(User.class);
User u=jdbcTemplate.queryForObject(sql, new RowMapper<User>() { @Override
public User mapRow(ResultSet rs, int arg1) throws SQLException {
User u=new User();
u.setId(rs.getInt("id"));
String result=null;
if(rs.getString("name")!=null){
try{
result = new String(rs.getString("name").getBytes(),"utf-8");
}catch(Exception e){
result = null;
}
}
u.setName(result);
u.setPassword(rs.getString("password"));
return u;
}
},8);
System.out.println(u);
System.out.println("用户查询成功");
} catch (Exception e) {
System.out.println("用户查询失败");
System.out.println(e.getMessage());
}
}
// @Test
// public void userSelsById(){
// String sql="select * from user where id=?";
// try {
////RowMapper<User> rowMapper=new BeanPropertyRowMapper<User>(User.class);
// List<User> u=jdbcTemplate.query(sql);
//// {
////
//// @Override
//// public User mapRow(ResultSet rs, int arg1) throws SQLException {
//// User u=new User();
//// u.setId(rs.getInt("id"));
//// u.setName(rs.getString("name"));
//// u.setPassword(rs.getString("password"));
//// return u;
//// }
//// },2);
// System.out.println(u);
// System.out.println("用户查询成功");
// } catch (Exception e) {
// System.out.println("用户查询失败");
// System.out.println(e.getMessage());
// }
// }
//测试用户的批量添加;
@Test
public void userManyAdd(){
String sql="insert into user values(?,?,?)";
//添加列表;
List<Object[]> userAdd=new ArrayList<Object[]>();
userAdd.add(new Object[]{1,"小明","123456"});
userAdd.add(new Object[]{2,"张飞","123456"});
userAdd.add(new Object[]{3,"刘备","123456"});
try {
jdbcTemplate.batchUpdate(sql, userAdd);
System.out.println("批量用户添加成功");
} catch (Exception e) {
System.out.println("批量用户添加失败");
}
}
//查询用户id大于7的用户的信息;
@Test
public void userQuery(){
String sql="select * from user where id>?";
//调用jdbcTemplate的方法,重写mapRow的方法;
try {
List<User> users=jdbcTemplate.query(sql, new RowMapper() {
@Override
public Object mapRow(ResultSet rs, int arg1) throws SQLException {
User u=new User();
u.setId(rs.getInt("id"));
u.setName(rs.getString("name"));
u.setPassword(rs.getString("password"));
return u;
}
},7);
System.out.println(users);
System.out.println("用户查询成功");
} catch (Exception e) {
System.out.println("用户查询失败");
System.out.println(e.getMessage());
}
}
}

问题总结:

1.缺少包 :之前使用的是一个集成的spring的包,但是其中还是少了一些jar包,加c3p0的包;

2.数据库乱码问题,这个问题现在还没很好的解决啊,数据库是用命令行的,程序端插入的中文在命令行窗口还是乱码的,取出的数据是正常的。现在IDEA的编码格式是utf-8,数据库设置了utf-8但是没有生效,再次启动还是会变,

mysql> show variables like '%char%';
+--------------------------+---------------------------------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.1\share\charsets\ |
+--------------------------+---------------------------------------------------------+
8 rows in set (0.00 sec)

Spring 连接数据库测试的更多相关文章

  1. Spring连接数据库的几种常用的方式

    本文简单的讲解使用Spring连接数据库的几种常用方法: 测试主类为: package myspring2; import java.sql.*; import javax.sql.DataSourc ...

  2. Spring TestContext测试框架搭建

    同样是测试,JUnit和Spring TestContext相比,Spring TestContext优势如下: 1.Spring TestContext可以手动设置测试事务回滚,不破坏数据现场 2. ...

  3. Spring引用测试

    上下文 using System; using Spring.Core; using Spring.Aop; using System; using Spring.Core; using Spring ...

  4. 用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建三:配置spring并测试

    这一部分的主要目的是 配置spring-service.xml  也就是配置spring  并测试service层 是否配置成功 用IntelliJ IDEA 开发Spring+SpringMVC+M ...

  5. spark之JDBC开发(连接数据库测试)

    spark之JDBC开发(连接数据库测试) 以下操作属于本地模式操作: 1.在Eclipse4.5中建立工程RDDToJDBC,并创建一个文件夹lib用于放置第三方驱动包 [hadoop@CloudD ...

  6. Spring MVC测试框架

    原文链接:http://jinnianshilongnian.iteye.com/blog/2004660 Spring MVC测试框架详解——服务端测试 博客分类: springmvc杂谈 spri ...

  7. Spring MVC测试框架详解——服务端测试

    随着RESTful Web Service的流行,测试对外的Service是否满足期望也变的必要的.从Spring 3.2开始Spring了Spring Web测试框架,如果版本低于3.2,请使用sp ...

  8. Spring Boot(七):spring boot测试介绍

    首先maven要引入spring-boot-starter-test这个包. 先看一段代码 @RunWith(SpringRunner.class) @SpringBootTest(webEnviro ...

  9. spring 学习(一):使用 intellijIDEA 创建 maven 工程进行 Spring ioc 测试

    spring学习(一):使用 intellijIDEA 创建 maven 工程进行 Spring ioc 测试 ioc 概念 控制反转(Inversion of Control,缩写为IOC),是面向 ...

随机推荐

  1. iOS textfield实现一行的数字限制,超出进行弹框

    步骤一:添加textfield协议‘ @interface LsGeXingQianMingVC ()<UITextFieldDelegate> 步骤2:设置代理 _GeXingQianM ...

  2. 读书笔记之深入分析Java Web技术内幕

    章节: 1 B/SB/S的优点: 客户端使用统一的浏览器(Browser) ,浏览器的统一带来了操作的统一,无论使用什么服务,因为浏览器是相同的,所以操作类似.客户使用简单了.服务端开发简化; 使用统 ...

  3. iframe中的各种跳转方法(转)

    一.背景A,B,C,D都是jsp,D是C的iframe,C是B的iframe,B是A的iframe,在D中跳转页面的写法区别如下. 二.JS跳转window.location.href.locatio ...

  4. 【实习记】2014-08-22试用SSH客户端XShell与SecuretyCRT与MobaXterm总结

        虚拟机下来了,是32位8G内存双核的win7系统. 测试显示实习生可以用办公机登录虚拟机在ssh到linux编译机.办公机虽ping通但不可以ssh上去. 只说这么多. 用惯linux下的sh ...

  5. 原生JavaScript 获取下一个/上一个同胞元素

    看JavaScript遇到的问题,研究了下 获取上一个或者下一个同胞元素,使用很多人会立马想到JQuery  prev() 和 next() 的确非常方便.那么原生的JavaScript该怎么获取 上 ...

  6. configure: error: Cannot find libmysqlclient under /usr Note that the MySQL client library is not bundled anymore! 报错解决

    错误说明 今天在centos 6.3 64位版本上安装PHP5.4.3时在./configure 步骤的时候出现了下面错误configure: error: Cannot find libmysqlc ...

  7. html5时间选择器

    HTML5日期输入类型(date)   分享   分享   分享   分享   分享 在很多页面和web应用中都有输入日期和时间的地方,最典型的是订飞机票,火车票,酒店,批萨等网站. 在HTML5之前 ...

  8. iOS: 学习笔记, Swift运算符定义

    Swift操作符可以自行定义, 只需要加上简单的标志符即可. @infix 中置运算. 如+,-,*,/运算 @prefix 前置运算. 如- @postfix 后置运算. a++, a-- @ass ...

  9. 项目管理Point

    1.项目管理流程 在设计阶段需要提交的成果物:类图设计(每个方法要有成形的SQL),页面设计,数据库设计,思路:需求分析->用户故事->客户确认(前三步是个迭代过程)->类图设计(了 ...

  10. C语言嵌入式系统编程修炼之六:性能优化

    使用宏定义 在C语言中,宏是产生内嵌代码的唯一方法.对于嵌入式系统而言,为了能达到性能要求,宏是一种很好的代替函数的方法. 写一个"标准"宏MIN ,这个宏输入两个参数并返回较小的 ...