知识大全 Spring中使用JDBC

Posted

篇首语:少年意气强不羁,虎胁插翼白日飞。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Spring中使用JDBC相关的知识,希望对你有一定的参考价值。

Spring中使用JDBC  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

首先要获得DataSource连接池         要对数据库执行任何的JDBC操作 需要有一个Connection 在Spring中 Connection对象是通过DataSource获得的         有几种方法可以得到DataSource 其中一种方法是使用Spring提供的轻量级 springframework jdbc datasource DriverManagerDataSource 第二种方法是使用mons dbcp BasicDataSource类         一 使用DriverMangerDataSource 这种方法是轻量级的 方便测试        public class DataSoureProvider         public static DriverManagerDataSource dataSource = new DriverManagerDataSource()           public static DriverManagerDataSource getInstance()         dataSource setDriverClassName( mysql jdbc Driver )         dataSource setUrl( jdbc:mysql://localhost: /book )         dataSource setUsername( y**** )         dataSource setPassword( h******* )         return dataSource;                 @Test         public void test()         DataSoureProvider getInstance()         try         dataSource getConnection()                 catch (SQLException e)         e printStackTrace()                         第 ~ 行是配置连接数据库所需的信息         二 使用BasicDataSouce创建一个连接池 应为BasicDataSource所有属性都是通过setter方法暴露在外面的 我们可以像配置其他Srping Bean那样配置它        我将数据库连接信息配置在properties文件中 利用spring的 springframewonfig PropertyPlaceholderConfigurer类进行读取装载 可以查看spring_装配Bean一文         书写配置文件applicationContext xml:        <?xml version= encoding= UTF ?> <beans         xmlns=         xmlns:xsi= instance         xmlns:p=         xsi:schemaLocation= beans xsd >           <bean id= dbproperty class= springframewonfig PropertyPlaceholderConfigurer >         <property name= location >         <value>connect properties</value>         </property>         </bean>                 <bean id= myDataSource class= mons dbcp BasicDataSource >         <property name= driverClassName >         <value>$db driver</value>         </property>         <property name= url >         <value>$db url</value>         </property>         <property name= username >         <value>$db username</value>         </property>         <property name= password >         <value>$db password</value>         </property>         </bean> </beans>        第 ~ 行配置BasicDataSource参数 其中<value>中的参数是在connect propertices配置文件中拿到的     进行测试         public class DataSourceProvider         @Test         public void connectTest()         ApplicationContext context = new ClassPathXmlApplicationContext(         applicationContext xml )         BasicDataSource dataSource = (BasicDataSource) context         getBean( myDataSource )         try         dataSource getConnection()         System out println( connect successful )                 catch (SQLException e)         e printStackTrace()                                 使用mons dbcp BasicDataSource需要引入额外的jar包 分别是mons collections jar mons dbcp jar mons pool jar 为了方便大家 这里有这三个jar包的下载地址         Spring把JDBC中重复的操作建立成了一个模板类 sprire JdbcTemplate         使用JdbcTemplate:        要使用JdbcTemplate 需要为每一个DAO配置一个JdbcTemplate实例        public class StudentDaoImp implements StudentDao         private JdbcTemplate jdbcTemplate;         @Override         public void setJdbcTemplate(JdbcTemplate jdbcTemplate)         this jdbcTemplate = jdbcTemplate;                 如上 StudentDaoImp内配置了一个JdbcTemplate对象和它对应的setter方法 这样就可以在Spring配置文件中对其进行赋值         <?xml version= encoding= UTF ?> <beans xmlns=         xmlns:xsi= instance xmlns:p=         xsi:schemaLocation= beans xsd >           <bean id= dbproperty         class= springframewonfig PropertyPlaceholderConfigurer >         <property name= location >         <value>connect properties</value>         </property>         </bean>         <bean id= myDataSource class= mons dbcp BasicDataSource >         <property name= driverClassName >         <value>$db driver</value>         </property>         <property name= url >         <value>$db url</value>         </property>         <property name= username >         <value>$db username</value>         </property>         <property name= password >         <value>$db password</value>         </property>         </bean>         <bean id= jdbcTemplate class= sprire JdbcTemplate >         <property name= dataSource >         <ref bean= myDataSource />         </property>         </bean>                 <bean id= studentDao class= sunflower dao StudentDaoImp >         <property name= jdbcTemplate >         <ref bean= jdbcTemplate />         </property>         </bean> </beans>        第 ~ 行是装配JdbcTemplate这个Bean 其中需要为其设置dataSource这个参数 就是我们上面的到的DataSource     使用JdbcTemplate插入数据         public class StudentDaoImp implements StudentDao         private JdbcTemplate jdbcTemplate;           @Override         public void setJdbcTemplate(JdbcTemplate jdbcTemplate)         this jdbcTemplate = jdbcTemplate;                         public void insert(Student student)                 String sql = insert into student (cno name score) values(? ? ?) ;         //设置传递给通配符的参数         Object[] params = new Object[]student getCno() student getName() student getScore();         jdbcTemplate update(sql params)                 第 ~ 行为插入一条学生记录的方法 第 行中 JdbcTemplate为我们提供了update(String sql Object… args)方法 方便我们进行数据的插入     进行测试         public class InsertTest         @Test         public void insertTest()         Student student = new Student()         student setCno( )         student setName( 张飞 )         student setScore( )           ApplicationContext context = new ClassPathXmlApplicationContext(         applicationContext xml )         StudentDaoImp studentDao = (StudentDaoImp) context getBean( studentDao )         studentDao insert(student)                 数据库中多了一条记录         mysql> select * from student;        + + + + +        | sno | cno | name | score |        + + + + +        | | | 地心 | |        | | | 华雄 | |        | | | 孝慈 | |        | | | 必须 | |        | | | 华雄 | |        | | | 地心 | |        | | | 横切 | |        | | | 横切 | |        | | | 横切 | |        | | | 张飞 | |        + + + + +        rows in set        批量插入数据         批量插入数据需要用到 sprire BatchPreparedStatementSetter接口         修改StudentDaoImp:        public class StudentDaoImp implements StudentDao         private JdbcTemplate jdbcTemplate;           @Override         public void setJdbcTemplate(JdbcTemplate jdbcTemplate)         this jdbcTemplate = jdbcTemplate;                         public int insert(Student student)                 String sql = insert into student (cno name score) values(? ? ?) ;         //设置传递给通配符的参数         Object[] params = new Object[]student getCno() student getName() student getScore();         return jdbcTemplate update(sql params)                         public int[] batchInsert(final List<Student> list)                 String sql = insert into student (cno name score) values(? ? ?) ;                 BatchPreparedStatementSetter setter = new BatchPreparedStatementSetter()                 @Override         public void setValues(PreparedStatement ps int index) throws SQLException         Student student = (Student) list get(index)         ps setInt( student getCno())         ps setString( student getName())         ps setDouble( student getScore())                         //有多少条记录要处理         @Override         public int getBatchSize()         return list size()                 ;                 return jdbcTemplate batchUpdate(sql setter)                 第 ~ 行为批量插入的方法 BatchPreparedStatementSetter接口的两个方法 其中getBatchSize()方法是得到需要插入的记录的个数 setValues(PreparedStatement ps int index)方法是实际进行插入的方法         进行测试         @Test         public void batchInsert()         Student student = null student = null student = null;         student = new Student()         student = new Student()         student = new Student()           student setCno( )         student setName( 刘备 )         student setScore( )         student setCno( )         student setName( 关羽 )         student setScore( )         student setCno( )         student setName( 张飞 )         student setScore( )         List<Student> list = new ArrayList<Student>()         list add(student )         list add(student )         list add(student )         ApplicationContext context = new ClassPathXmlApplicationContext(         applicationContext xml )         StudentDaoImp studentDao = (StudentDaoImp) context         getBean( studentDao )         studentDao batchInsert(list)                 插入结果         mysql> select * from student;        + + + + +        | sno | cno | name | score |        + + + + +        | | | 刘备 | |        | | | 关羽 | |        | | | 张飞 | |        + + + + +        rows in set        查询一条记录         执行一条数据的查询 需要使用 sprire RowCallbackHandler接口的实现         修改StudentDaoImp:        /**         * 查询一条记录         */         public Student getStudent(final int id)         // 装载查询结果         final Student student = new Student()           String sql = select o s name s score from student s where sno = ? ;         // 设置查询参数         final Object[] params = new Object[] new Integer(id) ;         // 进行查询         jdbcTemplate query(sql params new RowCallbackHandler()         @Override         public void processRow(ResultSet rs) throws SQLException         student setCno(rs getInt( cno ))         student setName(rs getString( name ))         student setScore(rs getDouble( score ))                 )                 return student;                 进行测试         @Test         public void selectTest()         ApplicationContext context = new ClassPathXmlApplicationContext(         applicationContext xml )         StudentDaoImp studentDao = (StudentDaoImp) context         getBean( studentDao )           Student student = studentDao getStudent( )         System out println( cno: + student getCno() + name: + student getName() + score: + student getScore())                 查询多条记录         这里需要用到 sprire RowMapper接口的实现         修改StudentDaoImp:        /**         * 查询多条记录         */         public List<Student> getAllStudent()         String sql = select o s name s score from student s ;           return jdbcTemplate query(sql new RowMapper<Student>()         @Override         public Student mapRow(ResultSet rs int index) throws SQLException         Student student = new Student()         student setCno(rs getInt( cno ))         student setName(rs getString( name ))         student setScore(rs getDouble( score ))         return student;                 )                 RowMapper接口负责把Result中的一条记录映射成一个对象         进行测试         @Test         public void getAllStudent()         ApplicationContext context = new ClassPathXmlApplicationContext(         applicationContext xml )         StudentDaoImp studentDao = (StudentDaoImp) context         getBean( studentDao )           List<Student> list = new ArrayList<Student>()         list = studentDao getAllStudent()         for (int i = ; i < list size() i++)         System out println( name is: + list get(i) getName())                         也可以使用这种方法查询一条记录 只要附加查询参数即可         /**         * 查询一条记录         */         public Student getStudent(final int id)         // 装载查询结果         final Student student = new Student()           String sql = select o s name s score from student s where sno = ? ;         // 设置查询参数         final Object[] params = new Object[] new Integer(id) ;         List<Student> list = jdbcTemplate query(sql params         new RowMapper<Student>()         @Override         public Student mapRow(ResultSet rs int index)         throws SQLException         Student student = new Student()         student setCno(rs getInt( cno ))         student setName(rs getString( name ))         student setScore(rs getDouble( score ))         return student;                 )                 return list get( )         cha138/Article/program/Java/hx/201311/25910

相关参考

知识大全 Spring DAO之JDBC

SpringDAO之JDBC  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  SpringDAO之

知识大全 spring中的jdbc访问类JdbcTemplate使用

spring中的jdbc访问类JdbcTemplate使用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 jdbc方式读取oracle的clob字段实例

         可能大家也都习惯了spring和hibernate对CLOB字段的处理在spring中配置c

知识大全 加快JDBC中JSP数据库的访问速度

加快JDBC中JSP数据库的访问速度  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  JSP程序都

知识大全 在JDBC设计中加速JSP访问数据库

在JDBC设计中加速JSP访问数据库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  JSP程序都

知识大全 Hibernate 基于JDBC的事务

Hibernate基于JDBC的事务  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Hibern

知识大全 配置JBoss 4 JDBC连接

配置JBoss4JDBC连接  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Jboss的开发人员

知识大全 Hibernate 基于JDBC的事务[1]

Hibernate基于JDBC的事务[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Hib

知识大全 Hibernate 基于JDBC的事务[4]

Hibernate基于JDBC的事务[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Jav

知识大全 Hibernate 基于JDBC的事务[3]

Hibernate基于JDBC的事务[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Jav