您的位置:首页 > 编程语言 > Java开发

系统学习Spring之Spring in action(九)

2013-04-02 23:50 423 查看

每日一叨:

    我在写完依赖注入和面向切面编程后,后面的Spring知识点,我都不知道该怎么去写,后面的知识很多理论性的东西,其实写出来只要一个Demo

就可以完成,我不知道是不是仍然还是用Demo来支撑博文,推荐大家多去读书,因为我以后只会放我的博文中写出最简单的Demo.

文章导读:

   1.用Spring的Template来操作数据库

知识点:

  相信你们都会用JDBC去连接和操作数据库,JDBC操作数据的时候需要获取一个Connection,获取Connection的函数需要你自己去写一个工具类去

实现数据库的连接,Spring对最基本的JDBC提供了最基本的封装,可以用Template来代替重复的数据库连接代码.下面来看在Spring下如何用Template

实现对数据库最简单的增删改查操作. 

1.用Spring的Template来操作数据库

  在用Template写Demo之前,首先要准备数据库连接的Jar包,在这个例子中,我使用Mysql来做测试,mysql-connector-java-版本号.jar

在最低层的JDBC中,每次操作都会得到Connection,操作完了以后还要释放Connection,这样经常的建立和释放Connection会极大程序上减低系统的

性能,所以使用Jakata的dpcp数据库连接池用来Connection的得用,避免了建立和释放Connection造成成的系统开销.

用Dpcp的时,需要两个Jar包,分别是commons-dbcp-版本号.jar,commons-pool-版本号.jar  Spring的Jar在这里不在多说了.

  在Spring Confiuration配置文件中配置数据库资源如下:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/studyspring"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</bean>


这是mysql的数据库资源,studyspring,是我新创建的数据库:

create database studyspring;


先在studyspring数据库中建立一个用户表,方便后面测试使用:

create table t_user(id varchar(40) primary key,username varchar(50),password varchar(50));


通过数据库资源在Spring Configuration中配置Spring Template.

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.simple.SimpleJdbcTemplate">
<constructor-arg ref="dataSource"/>
</bean>


建立Dao层的interface:

public interface SimpleDao {
//新增用户信息
int addUser(Map<String,String> map);
//删除用户信息
int deleteUser(Map<String,String> map);
//更新用户信息
int updateUser(Map<String,String> map);
//查询用户信息
List<Map<String,Object>> queryUser();
}


Dao层的实现:

@Component("simpleDao")
public class SimpleDaoImpl implements SimpleDao {
@Autowired
private SimpleJdbcTemplate jdbcTemplate;
@SuppressWarnings("deprecation")
@Override
public int addUser(Map<String, String> map) {
// TODO Auto-generated method stub
return jdbcTemplate.update("insert into t_user values(?,?,?)",map.get("id"),map.get("username"),map.get("password"));
}
@SuppressWarnings("deprecation")
@Override
public int deleteUser(Map<String, String> map) {
// TODO Auto-generated method stub
return jdbcTemplate.update("delete from t_user where id=?", map.get("id"));
}

@SuppressWarnings("deprecation")
@Override
public int updateUser(Map<String, String> map) {
// TODO Auto-generated method stub
return jdbcTemplate.update("update  t_user set password=? where id=?", map.get("password"),map.get("id"));
}

@SuppressWarnings("deprecation")
@Override
public List<Map<String, Object>> queryUser() {
// TODO Auto-generated method stub
Map<String,String> map = new HashMap<String,String>();
return jdbcTemplate.queryForList("select * from t_user", map);
}
}


相信对于@component和@autowired注解应该都不陌生了,在这里就不多讲了.记得在用注解和自动发现的时候在配置文件中加上:

<context:component-scan base-package="com.ricky.zero">
</context:component-scan>


com.ricky.zero是你要搜索的包名

下面进行测试:

ApplicationContext ctx = new ClassPathXmlApplicationContext("/applicationContext.xml");
SimpleDao s  = (SimpleDao)ctx.getBean("simpleDao");
Map<String,String> p = new HashMap<String,String>();
p.put("id", "1");
p.put("username", "test1");
p.put("password", "test1");
s.addUser(p);


先添加一个test1用户,在添加一个test2用户方便测试

ApplicationContext ctx = new ClassPathXmlApplicationContext("/applicationContext.xml");
SimpleDao s  = (SimpleDao)ctx.getBean("simpleDao");
Map<String,String> p = new HashMap<String,String>();
p.put("id", "1");
p.put("username", "test2");
p.put("password", "test2");
s.addUser(p);


如果执行成功的话,相信你的数据库中有两条数据了.



添加操作完成后,测试查询:

ApplicationContext ctx = new ClassPathXmlApplicationContext("/applicationContext.xml");
SimpleDao s  = (SimpleDao)ctx.getBean("simpleDao");
List<Map<String,Object>> list = s.queryUser();
System.out.println(list.toString());


结果是:

[{id=1, username=test1, password=test1}, {id=2, username=test2, password=test2}]

查询后测试修改:

ApplicationContext ctx = new ClassPathXmlApplicationContext("/applicationContext.xml");
SimpleDao s  = (SimpleDao)ctx.getBean("simpleDao");
Map<String,String> p = new HashMap<String,String>();
p.put("id", "1");
p.put("password", "test");
s.updateUser(p);




id为1的数据的密码由原来的test1修改成功为test

测试删除:

ApplicationContext ctx = new ClassPathXmlApplicationContext("/applicationContext.xml");
SimpleDao s  = (SimpleDao)ctx.getBean("simpleDao");
Map<String,String> p = new HashMap<String,String>();
p.put("id", "1");
s.deleteUser(p);




数据库中id为1的数据已经不存在了,说明删除成功.

基于Spring Template的增删改查Demo到这里就完成了.

--------------------------------申明----------------------------       

                  本文可以免费阅读以及转载,转载时请注明出处.      

                  本人邮箱:Ricky_LS@163.com

                  Thank you for your corporation.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: