Spring(4):jdbc操作
Spring的jdbcTemplate操作
(1)針對javaee三層,每一層都有解決技術
(2)在dao層,使用jdbcTemplate
2.Spring對不同的持久化層都進行了封裝
jdbcTemplate對jdbc進行封裝
增加
1.導入jdbcTemplate的jar包。還有jdbc連接需要使用的包。
我們這裡導入的是mysql-coonector-java-5.1.40-bin.jar
2.創建對象,設置資料庫信息
3.創建jdbcTemplate對象,設置數據源
4.調用jdbcTemplate對象裡面的方法實現操作
@Test public void add(){ //設置資料庫信息 DriverManagerDataSource dataSource=new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql:///spring"); dataSource.setUsername("root"); dataSource.setPassword("6476282"); //創建JdbcTemplate對象 JdbcTemplate jdbctemplate=new JdbcTemplate(dataSource); //調用JdbcTemplate中的方法實現操作 //創建sql語句,並調用方法 String sql="insert into user values(?,?)"; int rows=jdbctemplate.update(sql, "lucy","150"); System.out.println(rows); }
修改
String sql="update user set password=? where username=?";
int rows=jdbcTemplate.update(sql,"1314","lucy");
System.out.println(rows);
刪除
String sql="delete from user where username=?";
int rows=jdbcTemplate.update(sql,"lucy");
System.out.println(rows);
查詢
1.查詢返回某一個值
String sql="select count(*) "
2.查詢返回對象
2.1 jdbc原始方法實現
2.2使用模板
//調用JdbcTemplate中的方法實現操作 String sql="select * from user where username=? and password=?"//第第二個參數是RowMapper介面(需要自己寫一個類實現這個介面),第三個是可變參數User user=jdbcTemplate.queryForObject(sql, new MyRowMapper(), "lucy","150");//實現RowMapper介面public class MyRowMapper implements RowMapper<User>{ @Override//該方法相當於進行到jdbc代碼中的while(rs.next())處 public User mapRow(ResultSet rs, int num) throws SQLException { String username=rs.getString("username"); String password=rs.getString("password"); User user=new User(password,username); return user; }}
3.查詢返回list集合
List<User> list=jdbcTemplate.query(sql, new MyRowMapper());//同樣需要寫一個類繼承RowMapper(),寫法雷同上述
Spring配置c3p0連接池和dao使用jdbcTemplate
使用連接池是為了提升操作資料庫的效率,使用連接池就好比一些東西已經造好等著你來用就行了,不使用連接池就像是你在用他們之前還要先造好然後礎拿去用,這比不用連接池要耗費更多的時間
c3p0原始在代碼中的寫法:
配置文件中配置:
(1)配置c3p0連接池
<!--c3p0連接池配置 --><bean id="dataSource"class="com.mchange.v2.c3p0.ComboPooledDataSource"> <!--注入屬性值 --> <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> <property name="jdbcUrl" value="jdbc:mysql:///spring"></property> <property name="password" value="6476282"></property> <property name="user" value="root"></property></bean>
(2)創建Service和Dao,jdbcTemplate對象,並將dataSource對象注入到jdbcTemplate中,jdbcTemplate對象注入到dao中,dao對象注入到Service中.
<!--Service和dao創建對象 --> <bean id="userDao" class="cn.itcast.c3p0.UserDao"> <property name="jdbcTemplate" ref="jdbcTemplate"></property> </bean> <bean id="userService" class="cn.itcast.c3p0.UserService"> <property name="userdao" ref="userDao"></property> </bean> <!--創建jdbcTemplate對象 --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <!-- 把dataSource傳遞到模板對象中,Jdbc中有屬性dataSource--> <property name="dataSource" ref="dataSource"></property> </bean>
java代碼中:
public class UserService { private UserDao userdao; public void setUserdao(UserDao userdao) { this.userdao = userdao; } public void add(){ userdao.add(); System.out.println("service/....."); }}public class UserDao { private JdbcTemplate jdbcTemplate; public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } public void add(){ //使用jdbcTemplate實現add功能 String sql="insert into user values(?,?)"; jdbcTemplate.update(sql, "jii","56"); }}//測試,成功導入資料庫數據 public void test(){ ApplicationContext context=newClassPathXmlApplicationContext("bean1.xml"); UserService userService=(UserService) context.getBean("userService"); userService.add(); }
推薦閱讀:
※SSM三大框架整合詳細教程(Spring+SpringMVC+MyBatis)
※實體類的欄位的驗證應該寫在service層嗎?
※史上最簡單的SpringCloud教程 | 第八篇: 消息匯流排(Spring Cloud Bus)
※Spring Cloud構建微服務架構:服務網關(過濾器)【Dalston版】
※用小說的形式講解Spring(1) —— 為什麼需要依賴注入
TAG:Spring |