初见Spring之JDBC
来源:互联网 发布:电玩游戏平台源码 编辑:程序博客网 时间:2024/05/21 11:55
初见Spring之JDBC
Spring是具有重要的特性就是提供对了JDBC的支持,Spring对JDBC的支持简化了java中JDBC操作,降低的开发难度,本文主要介绍如何利用Spring完成数据库连接以及增删改查等操作。
一丶Spring JDBC的基本概述
Spring操作数据库的主要和两个类相关:
1.DriverManagerDataSource:主要管理和数据的连接,包括数据库驱动,目标数据库url,登录数据的用户名以及密码,这个类交由Spring管理,我们只需要在配置文件中配置这个对象即可。
2.JdbcTemplate:是操作数据的核心类,这个类依赖DriverManagerDataSource这个类,对外提供访问数据库的一系列方法,其中常用的包括如下:
(1)JdbcTemplate.update(Stringsql)可以完成对数据的增删改的操作
(2)JdbcTemplate.execute(Stringsql)执行sql代表的数据操作,通过用来建表,建库。
(3)JdbcTemplate.quertyForObject(Strigsql,RowMapper map,Object...)
这个函数用来完成对数据库的查询操作,其返回值是一个单个的对象。
(4)JdbcTemplate.query(String sql,RowMappermap,object...)
这个函数也是完成对数据的查询操作,其返回值不是单个对象,而是一个List集合,当查询对象结果有多个的时候采用这个方法。
二丶Spring JDBC的基本操作
下面利用一个增删改查的操作来介绍Spring JDBC的基本操作。
1.SpringJDBC配置文件书写,利用Spring JDBC操作数据库的时候,一定要在Spring的配置文件中配置DataSource和JdbcTemplate这两个Bean对象,配置文件内容如下:
<!-- 指定需要扫描的包,使注解生效 --> <!-- 指定需要扫描的包,使注解生效 --> <context:component-scan base-package="jdbc"/> <!--AOP注解生效--> <aop:aspectj-autoproxy /> <!-- 1配置数据源 --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <!--数据库驱动 --> <property name="driverClassName"value="com.mysql.jdbc.Driver" /> <!--连接数据库的url --> <property name="url" value="jdbc:mysql://localhost:3306/spring"/> <!--连接数据库的用户名 --> <property name="username"value="root" /> <!--连接数据库的密码 --> <property name="password"value="123456" /> </bean> <!-- 2配置JDBC模板 --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <!-- 默认必须使用数据源 --> <property name="dataSource"ref="dataSource" /> </bean> <context:component-scan base-package="jdbc"/> <!--AOP注解生效--> <aop:aspectj-autoproxy /> <!-- 1配置数据源 --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <!--数据库驱动 --> <property name="driverClassName"value="com.mysql.jdbc.Driver" /> <!--连接数据库的url --> <property name="url" value="jdbc:mysql://localhost:3306/spring"/> <!--连接数据库的用户名 --> <property name="username"value="root" /> <!--连接数据库的密码 --> <property name="password"value="123456" /> </bean> <!-- 2配置JDBC模板 --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <!-- 默认必须使用数据源 --> <property name="dataSource"ref="dataSource" /> </bean>
2.User对象设计,这里一定需要特别注意,在将设计实体类的时候,必须要给属性值提供get和set方法并且提供不带参数的构造函数,否则Spring JDBC在返回查询的实体对象的时候会报错。
publicclass User { publicString name; publicint age; publicUser(String name,int age){ this.name= name; this.age= age; } publicUser(){ } publicString getName() { returnname; } publicvoid setName(String name) { this.name= name; } publicint getAge() { returnage; } publicvoid setAge(int age) { this.age= age; } }
3.UserDaoImple的设计:
@Repository("userDao")public class userDaoImpl implements userDao{ @Resource(name="jdbcTemplate") publicJdbcTemplate JdbcTemplate; @Override publicint insert(User user) { // TODO Auto-generated method stub String sql = "insert intouser(name,age) value(?,?)"; intresult= JdbcTemplate.update(sql,user.name,user.age); returnresult; } @Override publicint deleteByName(String name) { // TODO Auto-generated method stub String sql = "delete from user wherename=?"; returnJdbcTemplate.update(sql,name); } @Override publicint updataByName(User user) { // TODO Auto-generated method stub String sql = "update user set age=?where name=?"; returnJdbcTemplate.update(sql,user.age,user.name); } @Override publicUser queryByName(String name) { // TODO Auto-generated method stub String sql = "select * from userwhere name=?"; RowMapper<User> rowMapper = newBeanPropertyRowMapper<User>(User.class); returnJdbcTemplate.queryForObject(sql,rowMapper,name); } @Override publicList<User> queryAll() { // TODO Auto-generated method stub String sql = "select * fromuser"; RowMapper<User> rowMapper = newBeanPropertyRowMapper<User>(User.class); returnJdbcTemplate.query(sql,rowMapper); } @Test @Override publicvoid createUserTable() { // TODO Auto-generated method stub String sql = "create tableuser("+ "id int primary keyauto_increment,"+ "name char(50),"+ "age int)"; //指向一条建标语句 JdbcTemplate.execute(sql); }}
4.测试代码设计,在这个测试代码中加入了Junit4这个单元测试框架。
public class MainJDBC { @Test publicvoid mainTest(){ ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); userDao userDao =(userDao) context.getBean("userDao"); userDao.createUserTable(); } @Test publicvoid insertTest(){ ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); userDao userDao =(userDao) context.getBean("userDao"); User user = new User("jason2", 22); userDao.insert(user); } @Test publicvoid deleteTest(){ ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); userDao userDao =(userDao) context.getBean("userDao"); User user = new User("jason", 22); userDao.deleteByName("jason"); } @Test publicvoid updateTest(){ ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); userDao userDao =(userDao) context.getBean("userDao"); User user = new User("jason", 100); userDao.updataByName(user); } @Test publicvoid queryTest(){ ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); userDao userDao =(userDao) context.getBean("userDao"); User user = userDao.queryByName("jason1"); System.out.println("name="+user.name+"age="+user.age); } @Test publicvoid queryAllTest(){ ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); userDao userDao =(userDao) context.getBean("userDao"); List<User> userList =userDao.queryAll(); for(int i =0;i<userList.size();i++){ System.out.println("name ="+userList.get(i).name+"age="+userList.get(i).age); } }}
- 初见Spring之JDBC
- 初见Spring之事务管理
- 初见Spring之AOP编程
- Spring之初见端倪——配置篇
- Spring MVC学习系列(1)之人生若只如初见
- Spring之JDBC
- Spring DAO之JDBC
- Spring DAO之JDBC
- Spring之JDBC
- Spring JDBC之NamedParameterJdbcTemplate
- spring jdbc之query
- spring之JDBC
- Spring之JDBC Template
- spring-guide之spring-jdbc
- Spring学习之Spring JDBC
- Groovy 我之初见
- Petshop 4.0 之初见
- symbian之初见
- ZOJ 1992 Sightseeing Tour(混合图欧拉回路)
- jQuery EasyUI弹出确认对话框(确认操作中.....)
- 风控分类模型种类(决策、排序)比较与模型评估体系(ROC/gini/KS/lift)
- 使用PyCharm执行scrapy项目
- IE浏览器被2345网址导航劫持
- 初见Spring之JDBC
- tiny4412 设备树之pinctrl(番外)
- 磁盘分区
- 扩展欧几里德板子 poj2142
- FZU 2082 过路费(树链剖分,边权)
- Tomcat的访问日志-localhost_access_log和记录Post请求参数
- 网页更容易被搜索引擎收录--善用标签
- 集合,增删改查,事务
- Javascript怎么将秒转换为时间