SSM学习04spring的数据库运行
Posted 2312947032zyk
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSM学习04spring的数据库运行相关的知识,希望对你有一定的参考价值。
学习spring开发数据库还是要导入额外的包
包结构:
导入包后编辑applicationContext.xml文件
1 <beans xmlns="http://www.springframework.org/schema/beans" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://www.springframework.org/schema/beans 4 http://www.springframework.org/schema/beans/spring-beans.xsd"> 5 <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 6 <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> 7 <property name="url" value="jdbc:mysql://localhost:3306/spring"></property> 8 <property name="username" value="root"></property> 9 <property name="password" value="123456"></property> 10 </bean> 11 <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> 12 <property name="dataSource" ref="dataSource" /> 13 </bean> 14 15 16 </beans>
第一个bean用来配置数据源:定义数据库所需要的驱动名称,数据库url,数据库的账号密码。
第二个bean用来配置jdbc模板:加载数据源。
手动创建一个mysql数据库命名为spring。
测试代码:
1 package com.zyk.database; 2 3 import org.springframework.context.ApplicationContext; 4 import org.springframework.context.support.ClassPathXmlApplicationContext; 5 import org.springframework.jdbc.core.JdbcTemplate; 6 7 8 public class JdbcTemplateTest { 9 10 public static void main(String[] args) { 11 // TODO Auto-generated method stub 12 ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml"); 13 JdbcTemplate jdbcTemplate=(JdbcTemplate)applicationContext.getBean("jdbcTemplate"); 14 jdbcTemplate.execute("create table account("+ 15 "id int primary key,"+ 16 "username varchar(50),"+ 17 "balance double)"); 18 System.out.println("创建成功"); 19 } 20 21 }
此次测试用JdbcTemplate的execute()方法创建数据表。
"create table account("+"id int primary key,"+"username varchar(50),"+"balance double)"
实验结果:
实验问题总结:
第一是xml文件的拼写一定要认真仔细,自己还不知道xml的自动补全后面的class文件,所以就手敲完了。
第二执行的sql建表语句要分清分号,逗号和括号。
第三自己在写JdbcTemplate类创建对象时,不知道为什么eclipse没有给我自动引入他在的包,还是自己手动import。
--------------------------------------------------------分割线:spring进行update delete insert-------------------------------------------------------------------------------
创建account类,添加属性和get,set方法:
1 package com.zyk.database; 2 3 public class Account { 4 private int id; 5 private String username; 6 private double balance; 7 public int getId() { 8 return id; 9 } 10 public void setId(int id) { 11 this.id = id; 12 } 13 public String getUsername() { 14 return username; 15 } 16 public void setUsername(String username) { 17 this.username = username; 18 } 19 public double getBalance() { 20 return balance; 21 } 22 public void setBalance(double balance) { 23 this.balance = balance; 24 } 25 26 @Override 27 public String toString() { 28 return "Account [id=" + id + ", username=" + username + ", balance=" + balance + "]"; 29 } 30 31 32 }
AccountDao层接口写方法:
1 package com.zyk.database; 2 3 public interface AccountDao { 4 public int add(Account account); 5 public int update(Account account); 6 public int delete(int id); 7 }
AccountDaoImpl:
1 package com.zyk.database; 2 3 import org.springframework.jdbc.core.JdbcTemplate; 4 5 import com.sun.org.apache.bcel.internal.generic.NEW; 6 7 public class AccountDaoImpl implements AccountDao { 8 9 //声明JdbcTemplate属性及其setter方法 10 private JdbcTemplate jdbcTemplate; 11 public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { 12 this.jdbcTemplate = jdbcTemplate; 13 } 14 15 @Override 16 public int add(Account account) { 17 //定义SQL数据库操作语句 18 String sql= "insert into account(username,balance) value(?,?)"; 19 //定义数组来储存SQL语句中的参数 20 Object obj =new Object[] { 21 account.getUsername(), 22 account.getBalance(), 23 }; 24 //执行添加操作,返回的是受SQL语句影响的记录条数 25 int num=this.jdbcTemplate.update(sql, obj); 26 return num; 27 } 28 29 @Override 30 public int update(Account account) { 31 //定义SQL数据库操作语句 32 System.out.println(account); 33 String sql= "update account set username=?,balance=? where id=?;"; 34 //定义数组来储存SQL语句中的参数 35 Object obj =new Object[] { 36 account.getUsername(), 37 account.getBalance(), 38 account.getId() 39 }; 40 //执行更新操作,返回的是受SQL语句影响的记录条数 41 int num=this.jdbcTemplate.update(sql, obj); 42 System.out.println(sql); 43 return num; 44 } 45 46 @Override 47 public int delete(int id) { 48 //定义SQL数据库操作语句 49 String sql= "delete from account where id=?"; 50 //执行删除操作,返回的是受SQL语句影响的记录条数 51 int num=this.jdbcTemplate.update(sql, id); 52 System.out.println(sql); 53 return num; 54 } 55 56 }
测试用的
UpdateTest:
1 package com.zyk.database; 2 3 import org.springframework.context.ApplicationContext; 4 import org.springframework.context.support.ClassPathXmlApplicationContext; 5 6 public class UpdateTest { 7 8 public static void main(String[] args) { 9 // TODO Auto-generated method stub 10 ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml"); 11 AccountDao accountDao=(AccountDao)applicationContext.getBean("accountDao"); 12 Account account=new Account(); 13 System.out.println(); 14 account.setId(2); 15 account.setBalance(0.005); 16 17 account.setUsername("wangwu"); 18 19 int num=accountDao.update(account); 20 if(num!=0) { 21 System.out.println("success"); 22 }else { 23 System.out.println("fail"); 24 } 25 } 26 27 }
DeleteTest:
1 package com.zyk.database; 2 3 import org.springframework.context.ApplicationContext; 4 import org.springframework.context.support.ClassPathXmlApplicationContext; 5 6 import com.sun.xml.internal.bind.v2.model.core.ID; 7 8 public class DeleteTest { 9 10 public static void main(String[] args) { 11 // TODO Auto-generated method stub 12 ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml"); 13 AccountDao accountDao=(AccountDao)applicationContext.getBean("accountDao"); 14 int num=accountDao.delete(1); 15 if(num!=0) { 16 System.out.println("success"); 17 }else { 18 System.out.println("fail"); 19 } 20 21 } 22 23 }
AddTest:
1 package com.zyk.database; 2 3 import org.springframework.context.ApplicationContext; 4 import org.springframework.context.support.ClassPathXmlApplicationContext; 5 6 public class AddTest { 7 8 public static void main(String[] args) { 9 // TODO Auto-generated method stub 10 ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml"); 11 AccountDao accountDao=(AccountDao)applicationContext.getBean("accountDao"); 12 Account account=new Account(); 13 account.setUsername("tom"); 14 account.setBalance(0.001); 15 System.out.println(account.getBalance()); 16 int num=accountDao.add(account); 17 if(num>0) { 18 System.out.println("成功"); 19 }else { 20 System.out.println("失败"); 21 } 22 } 23 24 }
问题:
我的添加和更新都会报sql语句的语法错误,但是我看着没有问题,现在还没解决,只有delete可以正常使用。
以上是关于SSM学习04spring的数据库运行的主要内容,如果未能解决你的问题,请参考以下文章
SSM(Spring+SpringMVC+Mybatis)框架搭建详细教程附源代码Demo
04_SSM框架整合(Spring+SpringMVC+MyBatis)