日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring学习五(JDBC支持)

發布時間:2025/7/14 javascript 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring学习五(JDBC支持) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Spring的jdbc支持

?

1配置db.properties,將有關JDBC的信息載入

2bean文件配置數據源,這里用e3p0作為數據源載入db.properties

3配置template的bean 之后,可以直接使用。

JUnit的測試

代碼如下

db.proeprties

jdbc.username=root jdbc.password=s1127736971 jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://127.0.0.1:3306/school jdbc.iniPoolSize=5 jdbc.maxPoolSize=10 //強烈注意!!!!! 每行空格也要刪掉,因為載入的時候會讀取空格

?

?

?

bean文件如下

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd"><!-- 配置配置文件 --> <context:property-placeholder location="classpath:db.properties"/><!-- 配置數據源文件 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="user" value="${jdbc.username}"></property> <property name="password" value="${jdbc.password}"></property> <property name="jdbcUrl" value="${jdbc.url}"></property> <property name="driverClass" value="${jdbc.driver}"></property> <property name="initialPoolSize" value="${jdbc.iniPoolSize}"></property> <property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property> </bean><!-- 配置template --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"></property> </bean><context:component-scan base-package="Test"></context:component-scan> </beans>

?

?

?

java文件如下

package Test;import java.sql.SQLException; import java.util.ArrayList; import java.util.List;import javax.sql.DataSource;import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper;public class test {private ApplicationContext ctx= null;private JdbcTemplate jdbcTemplate=null;private StudentDao dao;{ctx=new ClassPathXmlApplicationContext("SpringJDBC.xml");jdbcTemplate=(JdbcTemplate) ctx.getBean("jdbcTemplate");//里面就已經配置了datasource的配置,所以可以更改。dao=ctx.getBean(StudentDao.class);}@Testpublic void testStudentDao(){System.out.println(dao.getById(2));}@Testpublic void testQueryForObject(){//用于數據統計類型String sql = "SELECT COUNT(id) FROM student ";long count = jdbcTemplate.queryForObject(sql, Long.class);System.out.println(count);}@Testpublic void testQueryForList(){//收集屬性集合類型String sql = "SELECT id,name,age,address FROM student WHERE id>? ";RowMapper<Student> rowMapper= new BeanPropertyRowMapper<Student>(Student.class);List<Student> students =jdbcTemplate.query(sql, rowMapper,1);//一個不同的集合語句 System.out.println(students);}/** 這里要用BeanPropertyRowMapper,不要在queryForObject里面用另一個,格式如下。* 1 可以在里面配置類對應的名字,比如 name name 前一個是類屬性名字,后一個是database里面名字* 2 不支持級聯屬性* 3 RowMapper 是映射屬性行,BeanPropertyRowMapper是其一個實現類* */@Testpublic void testQueryById(){String sql = "SELECT id,name,age,address FROM student WHERE id=? ";RowMapper<Student> rowMapper= new BeanPropertyRowMapper<Student>(Student.class);Student student =jdbcTemplate.queryForObject(sql, rowMapper,1);System.out.println(student);}@Testpublic void testUpdateBatch(){String sql = "INSERT INTO student(id,name,age,address) Values(?,?,?,?)";List<Object[]> date = new ArrayList<>();date.add(new Object[]{"5","xiaohong","52","shanghai"});date.add(new Object[]{"6","xiaobai","22","fujian"});jdbcTemplate.batchUpdate(sql, date);}@Test//這個更新可以是 UPDATE DELETE INSERTpublic void testUpdate (){String sql = "UPDATE student SET Address = ? where id=?";jdbcTemplate.update(sql, "beijing",4);}@Testpublic void testDataSource() throws SQLException {//測試 DataSource是否可行DataSource datasource = (DataSource) ctx.getBean(javax.sql.DataSource.class);//記一個非常不科學的錯誤,db.properties里面不要有空格,他會把空格也當成命令。 System.out.println(datasource.getConnection());}}

?

?

?

注,一般用Dao類文件,是將Dao里面添加jdbcTemplate成員屬性。而不用另一種extends 的方法,不考慮。

package Test;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.stereotype.Repository;@Repository//自動裝配 public class StudentDao {@Autowiredprivate JdbcTemplate jdbcTemplate;public Student getById(int id){String sql = "SELECT id,name,age,address FROM student WHERE id=? ";RowMapper<Student> rowMapper= new BeanPropertyRowMapper<Student>(Student.class);Student student =jdbcTemplate.queryForObject(sql, rowMapper,id);return student;} }

?

?

使用jdbc的具名參數設置

配置NamedParameterJdbcTemplate ? Bean文件

xml添加

<!-- 配置帶參template --> <bean id="namedtemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate"> <constructor-arg ref="dataSource"></constructor-arg> </bean>

?

java代碼添加測試

@Test//這是利用對象來具名參數,要求Values(:id,:name,:age,:address)和類的名字要一樣,mysql的名字要一樣。public void testNamedTemplate2(){String sql = "INSERT INTO student(id,name,age,address) Values(:id,:name,:age,:address)";Student student = new Student();student.setId(11);student.setAge(4);student.setName("xiaoxiaobai");student.setAddress("hong shang lu ");SqlParameterSource ss = new BeanPropertySqlParameterSource(student);namedParameterJdbcTemplate.update(sql, ss);}@Test//利用具名參數來構造template 優點當參數多的時候維護比較容易 不需要按照固定順序。缺點是相對于estUpdateBatch()比較復雜public void testNamedTemplate(){String sql = "INSERT INTO student(id,name,age,address) Values(:id,:name,:age,:address)";Map<String,Object> paramMap = new HashMap<String,Object>();paramMap.put("id", 10);paramMap.put("name", "xiaobai");paramMap.put("age",51 );paramMap.put("address", "tongbei");namedParameterJdbcTemplate.update(sql, paramMap);}

?

轉載于:https://www.cnblogs.com/s1127736971/p/7536557.html

總結

以上是生活随笔為你收集整理的Spring学习五(JDBC支持)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 中文字幕一区二区三区夫目前犯 | 精品国产综合 | 中国黄色a级 | 午夜伊人网 | 欧美777| 亚洲丁香 | 日本女人黄色 | 国产成人av在线 | 少妇av一区二区三区无码 | 成人在线激情 | 97人妻精品一区二区三区软件 | 欧美成人h版在线观看 | 亚洲国产tv | 黄色网页在线 | 老司机精品视频在线播放 | 综合色在线观看 | av啊啊| 中国毛片网站 | 秋霞综合网 | 狠狠躁夜夜躁人人爽视频 | 2019自拍偷拍 | 苏晴忘穿内裤坐公交车被揉到视频 | 中文字幕网伦射乱中文 | 天天爽夜夜春 | 91在线播 | 中文字幕在线看高清电影 | 日韩av资源网 | 性感美女一区二区三区 | 亚洲国产成人久久 | 国产成人精品一区二 | 日韩黄色av| 国产精品无码电影在线观看 | 日本一卡二卡在线 | 青娱乐久久 | 欧美人体做爰大胆视频 | 免费成人在线看 | 日韩久久一区二区 | 国产精品69毛片高清亚洲 | 51av在线 | 国产精品成人3p一区二区三区 | 99欧美精品| 噼里啪啦免费高清看 | 伊人一二三 | 成人做爰视频www网站小优视频 | 久久国产主播 | 射进来av影视网 | 久久伊人av| 毛片免费一区二区三区 | 免费成人在线观看 | 91国偷自产一区二区三区女王 | 日韩草逼 | 国产精品网站入口 | 亚洲免费一区二区 | 黄色国产视频网站 | 美女xx00| 欧美 变态 另类 人妖 | 黄色一级视频网站 | 国产传媒第一页 | 国产精品5区 | 另类视频在线观看 | 毛片视频网站 | av5566| 人妖性做爰aaaa| 狠狠搞av | 伊人色av| 成年人在线观看视频免费 | 免费无码av片在线观看 | 中文字幕女同女同女同 | 91红桃视频 | 欧美mv日韩mv国产 | 蜜臀视频在线播放 | av国产在线观看 | 亚洲女人初尝黑人巨大 | 中文字幕日韩精品亚洲一区小树林 | 国产裸体视频 | www.96av| 95看片淫黄大片一级 | 国精产品一区二区三区 | 国产又黄又粗又猛又爽的视频 | 欧美香蕉网| 久久aaa | 亚洲综合影视 | 在线中文字幕网站 | 啪啪免费小视频 | 五月少妇 | 国产亚洲精品久久久久久青梅 | 91婷婷色 | 玖玖999| 欧美日本高清 | 亚洲夜夜夜 | 天天干夜夜想 | 99精品久久久久久 | 福利视频午夜 | 亚洲成人中文字幕在线 | 91国内精品久久久久 | 又黄又骚又爽 | 国产精品久久久久久一区二区三区 | 一线毛片| 欧美成人一二三 |