spring中连接mysql数据库
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://zhanglulu.blog.51cto.com/352763/69802 |
今天做了一个spring小项目,第一次使用spring连接mysql数据库,按照实例步骤,一步一步的做;
1。首先创建一个mysql数据库myspringtest;
2。在Eclipse中创建了SpringDBTest项目
2.1 在Eclipse“窗口\首选项\java\构建路径\用户库”中建立用户库"spring",选择spring开发包spring-framework-1.2中的dist目录下的所有jar文件,完成后在项目中"配置构建路径\\库\\添加库\用户库\spring"
2.2 建立spring配置文件myspring.xml
配置数据源
<beans>
<bean id="dbtest" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource"> <ref local="dataSource"/> </property> </bean> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName"> <value>org.gjt.mm.mysql.Driver</value> </property> <property name="url"> <value>jdbc:mysql://localhost:3308/myspringtest</value> </property> <property name="username"> <value>root</value> </property> <property name="password"> <value>123</value> </property> </bean> </beans> 2.3 新建一个SqlStatement类存放操作数据库的语句,包括新建表格,插入数据,查询
package test;
public abstract class SqlStatement {
final public static String createSql = "create table if not exists mytable(id int ,cname varchar(50))"; final public static String insertData1 = "insert into mytable values(1,'name1')";
final public static String insertData2 = "insert into mytable values(2,'name2')";
final public static String insertData3 = "insert into mytable values(3,'name3')";
final public static String selectSql = "select * from mytable";
}
2.4 新建类SpringtoReseltSetInfo类,对应查询所得到的数据记录
package test;
public class SpringtoResultSetInfo {
private int id; private String templatename; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getTemplatename() { return templatename; } public void setTemplatename(String templatename) { this.templatename = templatename; } }
2.5 建立测试类Test,连接,查询,输出数据
package test; import java.sql.ResultSet;
import java.sql.SQLException; import java.util.ArrayList; import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowCallbackHandler; import org.springframework.jdbc.core.RowCountCallbackHandler; public class Test { /**
* @param args */ public static void main(String[] args) { // TODO 自动生成方法存根 Resource resource = new ClassPathResource("myspring.xml"); BeanFactory factory = new XmlBeanFactory(resource); JdbcTemplate jt = (JdbcTemplate) factory.getBean("dbtest"); // create the database
jt.execute(SqlStatement.createSql); // insert the data jt.execute(SqlStatement.insertData1); jt.execute(SqlStatement.insertData2); jt.execute(SqlStatement.insertData3); // get the datasheet info RowCountCallbackHandler rcch = new RowCountCallbackHandler(); jt.query(SqlStatement.selectSql, rcch); System.out.println("ColumnCount in ResultSet:" + rcch.getColumnCount()); System.out.println("RowCount in ResultSet:" + rcch.getRowCount()); System.out.println("ResultSet data:"); // get the column name String[] str = rcch.getColumnNames(); for (int i = 0, length = str.length; i < length; i++)
System.out.print(str[i] + " "); // get the data in datasheet final ArrayList list = new ArrayList(); jt.query(SqlStatement.selectSql, new RowCallbackHandler() { public void processRow(ResultSet rs) throws SQLException { SpringtoResultSetInfo sri = new SpringtoResultSetInfo(); sri.setId(rs.getInt(1)); sri.setTemplatename(rs.getString(2)); list.add(sri); } }); for (int i = 0, size = list.size(); i < size; i++) {
SpringtoResultSetInfo sri = (SpringtoResultSetInfo) list.get(i); System.out.print("\n"+" " + sri.getId()); System.out.print(" " + sri.getTemplatename()); } System.out.println("\n完成");
} }
在连接mysql数据库的过程中,一定要导入mysql的驱动程序,我把它和spring,struts,hibernate等jar文件专门存放在一个目录中,需要导入的时候很方便.
连接的时候,一个很重要的问题出现了,连接时一定要导入spring-framework-1.2\spring-framework-1.2.7\lib\jakarta-commons\下的四个包,common-collections,common-dbcp,common-pool,他们对于连接过程很重要,在开发过程中,在这里卡了很长时间,因为我在spring核心包内并不包括这几个jar文件,虚拟机总是反复的抛出同一个异常:2008-4-3 18:04:39 org.springframework.core.CollectionFactory <clinit>
信息: JDK 1.4+ collections available 2008-4-3 18:04:39 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions 信息: Loading XML bean definitions from class path resource [myspring.xml] Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: Error registering bean with name 'dataSource' defined in class path r esource [myspring.xml]: Class that bean class [org.apache.commons.dbcp.BasicDataSource] depends on not found; nested exception is java.lang.NoClassDefFoundError : org/apache/commons/pool/impl/GenericObjectPool java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at org.springframework.util.ClassUtils.forName(ClassUtils.java:109) at org.springframework.beans.factory.support.BeanDefinitionReaderUtils.createBeanDefinition(BeanDefinitionReaderUtils.java:65) at org.springframework.beans.factory.xml.DefaultXmlBeanDefinitionParser.parseBeanDefinitionElement(DefaultXmlBeanDefinitionParser.java:466) at org.springframework.beans.factory.xml.DefaultXmlBeanDefinitionParser.parseBeanDefinitionElement(DefaultXmlBeanDefinitionParser.java:432) at org.springframework.beans.factory.xml.DefaultXmlBeanDefinitionParser.parseBeanDefinitions(DefaultXmlBeanDefinitionParser.java:347) at org.springframework.beans.factory.xml.DefaultXmlBeanDefinitionParser.registerBeanDefinitions(DefaultXmlBeanDefinitionParser.java:197) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:295) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:223) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:173) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:148) at org.springframework.beans.factory.xml.XmlBeanFactory.<init>(XmlBeanFactory.java:73) at org.springframework.beans.factory.xml.XmlBeanFactory.<init>(XmlBeanFactory.java:61) at test.Test.main(Test.java:22),显示数据源不能加载,BasicDataResource并不在spring的核心包内,仔细的查找,发现在common-dbcp包内 还有一个常用的是common-logging,它用于日志记录,不过,在这里没有用到.
3.完成后的项目输出如下:
2008-4-3 18:07:56 org.springframework.core.CollectionFactory <clinit> 信息: JDK 1.4+ collections available 2008-4-3 18:07:56 org.springframework.core.CollectionFactory <clinit> 信息: Commons Collections 3.x available 2008-4-3 18:07:56 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions 信息: Loading XML bean definitions from class path resource [myspring.xml] 2008-4-3 18:07:57 org.springframework.jdbc.core.JdbcTemplate throwExceptionOnWarningIfNotIgnoringWarnings 警告: SQLWarning ignored: java.sql.SQLWarning: Table 'mytable' already exists ColumnCount in ResultSet:2 RowCount in ResultSet:3 ResultSet data: id cname 1 name1 2 name2 3 name3 完成 本文出自 “似水年华” 博客,请务必保留此出处http://zhanglulu.blog.51cto.com/352763/69802 本文出自 51CTO.COM技术博客 |


zhanglulu
博客统计信息
热门文章
最新评论
友情链接
