jdbc框架有很多,包括spring jdbc

本文内容纲要:jdbc框架有很多,包括spring jdbc

1.由于jdbc连接的繁琐性,故很多公司封装了jdbc框架,比如spring jdbc

2.比如spring jdbc框架中,用jdbctemplate,

通过jdbcTemplate 提供 int update(String sql, Object... args) 实现增加 、修改 、删除

代替了原来connection.createStatement().execuate(sql);

statemment.executeQuery(),executeUpdate()等方法。

甚至包括preparestatement的预处理参数?

比如:

String sql="select * from user where id=?";

return this.getJdbcTemplate().queryForObject(sql, new UserRowMapper(), id);

3.Spring中关于JDBC的一个辅助类(JDBC Template),它封装了JDBC的操作,使用起来非常方便。

appliactionContext.xml

1 <?xml version="1.0" encoding="UTF-8"?>

2 <beans xmlns="http://www.springframework.org/schema/beans"

3 xmlns:p="http://www.springframework.org/schema/p"

4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

5 xsi:schemaLocation="

6 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

7

8 <!--数据源的配置 -->

9 <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

10 <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>

11 <property name="url" value="jdbc:mysql:///spring"></property>

12 <property name="username" value="root"></property>

13 <property name="password" value=""></property>

14 </bean>

15

16

17   

18 <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">

19 <property name="dataSource" ref="dataSource"></property>

20 </bean>

21

22

23 <bean id="userDao" class="com.curd.spring.impl.UserDAOImpl">

24 <property name="jdbcTemplate" ref="jdbcTemplate"></property>

25 </bean>

26

27

28

29 </beans>

接口:IUserDAO.java

package com.curd.spring.dao;

2

3 import java.util.List;

4

5 import com.curd.spring.vo.User;

6

7 public interface IUserDAO {

8

9 public void addUser(User user);

10

11 public void deleteUser(int id);

12

13 public void updateUser(User user);

14

15 public String searchUserName(int id);

16

17 public User searchUser(int id);

18

19 public List<User> findAll();

20

21 }

接口实现类:UserDAOImpl.java

按照以往Spring的依赖注入,我们需要在接口实现类中利用构造器去获取JdbcTemplate

Spring早就帮我们想到了这点,它为我们提供了JdbcDaoSupport支持类,所有DAO继承这个类,就会自动获得JdbcTemplate(前提是注入DataSource)。

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">

2 <property name="dataSource" ref="dataSource"></property>

3 </bean>

4

5

6 <bean id="userDao" class="com.curd.spring.impl.UserDAOImpl">

7 <property name="jdbcTemplate" ref="jdbcTemplate"></property>

8 </bean>

在我们的实现类中直接利用getJdbcTemplate就可以获取操作对象了。

JdbcTemplate主要提供下列方法:

  1、execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;

  2、update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;

  3、query方法及queryForXXX方法:用于执行查询相关语句;

  4、call方法:用于执行存储过程、函数相关语句。

1 package com.curd.spring.impl;

2

3 import java.sql.ResultSet;

4 import java.sql.SQLException;

5 import java.util.List;

6

7 import org.springframework.jdbc.core.RowMapper;

8 import org.springframework.jdbc.core.support.JdbcDaoSupport;

9 import com.curd.spring.dao.IUserDAO;

10 import com.curd.spring.vo.User;

11

12 public class UserDAOImpl extends JdbcDaoSupport implements IUserDAO {

13

14 public void addUser(User user) {

15 String sql = "insert into user values(?,?,?)";

16 this.getJdbcTemplate().update(sql, user.getId(), user.getUsername(),

17 user.getPassword());

18 }

19

20 public void deleteUser(int id) {

21 String sql = "delete from user where id=?";

22 this.getJdbcTemplate().update(sql, id);

23

24 }

25

26 public void updateUser(User user) {

27 String sql = "update user set username=?,password=? where id=?";

28 this.getJdbcTemplate().update(sql, user.getUsername(),

29 user.getPassword(), user.getId());

30 }

31

32 public String searchUserName(int id) {// 简单查询,按照ID查询,返回字符串

33 String sql = "select username from user where id=?";

34 // 返回类型为String(String.class)

35 return this.getJdbcTemplate().queryForObject(sql, String.class, id);

36

37 }

38

39 public List<User> findAll() {// 复杂查询返回List集合

40 String sql = "select * from user";

41 return this.getJdbcTemplate().query(sql, new UserRowMapper());

42

43 }

44

45 public User searchUser(int id) {

46 String sql="select * from user where id=?";

47 return this.getJdbcTemplate().queryForObject(sql, new UserRowMapper(), id);

48 }

49

50 class UserRowMapper implements RowMapper<User> {

51      //rs为返回结果集,以每行为单位封装着

52 public User mapRow(ResultSet rs, int rowNum) throws SQLException {

53

54 User user = new User();

55 user.setId(rs.getInt("id"));

56 user.setUsername(rs.getString("username"));

57 user.setPassword(rs.getString("password"));

58 return user;

59 }

60

61 }

62

63 }

测试类:UserTest.java

1 package com.curd.spring.test;

2

3 import java.util.List;

4

5 import org.junit.Test;

6 import org.springframework.context.ApplicationContext;

7 import org.springframework.context.support.ClassPathXmlApplicationContext;

8

9 import com.curd.spring.dao.IUserDAO;

10 import com.curd.spring.vo.User;

11

12 public class UserTest {

13

14 @Test//增

15 public void demo1(){

16 User user=new User();

17 user.setId(3);

18 user.setUsername("admin");

19 user.setPassword("123456");

20

21 ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");

22 IUserDAO dao=(IUserDAO) applicationContext.getBean("userDao");

23 dao.addUser(user);

24

25 }

26

27 @Test//改

28 public void demo2(){

29 User user=new User();

30 user.setId(1);

31 user.setUsername("admin");

32 user.setPassword("admin");

33

34 ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");

35 IUserDAO dao=(IUserDAO) applicationContext.getBean("userDao");

36 dao.updateUser(user);

37 }

38

39 @Test//删

40 public void demo3(){

41 ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");

42 IUserDAO dao=(IUserDAO) applicationContext.getBean("userDao");

43 dao.deleteUser(3);

44 }

45

46 @Test//查(简单查询,返回字符串)

47 public void demo4(){

48 ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");

49 IUserDAO dao=(IUserDAO) applicationContext.getBean("userDao");

50 String name=dao.searchUserName(1);

51 System.out.println(name);

52 }

53

54 @Test//查(简单查询,返回对象)

55 public void demo5(){

56 ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");

57 IUserDAO dao=(IUserDAO) applicationContext.getBean("userDao");

58 User user=dao.searchUser(1);

59 System.out.println(user.getUsername());

60 }

61

62 @Test//查(复杂查询,返回对象集合)

63 public void demo6(){

64 ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");

65 IUserDAO dao=(IUserDAO) applicationContext.getBean("userDao");

66 List<User> users=dao.findAll();

67 System.out.println(users.size());

68 }

69

70

71

72 }

附:

1、Spring 为每种持久化技术 提供一个支持类,在DAO 中注入 模板工具类

    (1)JDBC : org.springframework.jdbc.core.support.JdbcDaoSupport

    (2)Hibernate 3.0 :org.springframework.orm.hibernate3.support.HibernateDaoSupport

    (3)iBatis :org.springframework.orm.ibatis.support.SqlMapClientDaoSupport

用户自己编写DAO 只需要继承 JdbcDaoSupport, 就可以注入 JdbcTemplate

2、 通过jdbcTemplate 提供 int update(String sql, Object... args) 实现增加 、修改 、删除

3、简单查询,返回原始数据类型, String类型

String sql = "select count(*) from user"; // int queryForInt(String sql)

String sql = "select name from user where id = ? "; // T queryForObject(String sql, Class requiredType, Object... args)

4、 复杂查询

JdbcTemplate 没有handler, 手动完成对象封装

编写实体类 RowMapper

class UserRowMapper implements RowMapper {

  @Override

  public User mapRow(ResultSet rs, int rowNum) throws SQLException {

    // rs 已经指向每一条数据,不需要自己调用 next,将rs指向数据 转换 User对象

    User user = new User();

    user.setId(rs.getInt("id"));

    user.setName(rs.getString("name"));

    return user;

  }

}

查询单个对象 T queryForObject(String sql, RowMapper rowMapper, Object... args)

return this.getJdbcTemplate().queryForObject(sql, new UserRowMapper(),id);

查询所有对象List集合 List query(String sql, RowMapper rowMapper, Object... args)

return this.getJdbcTemplate().query(sql, new UserRowMapper());

以上提供的方法基本可以满足我们的日常需要了。

本文转自http://www.cnblogs.com/lichenwei/p/3902294.html 感谢作者

本文内容总结:jdbc框架有很多,包括spring jdbc

原文链接:https://www.cnblogs.com/panxuejun/p/5938442.html

以上是 jdbc框架有很多,包括spring jdbc 的全部内容, 来源链接: utcz.com/z/296854.html

回到顶部