1. 程式人生 > >SpringMVC(四) 連線oracle資料庫操作

SpringMVC(四) 連線oracle資料庫操作

package com.dragon.entity;

public class UserInfo {  private int user_id;  private String user_name;  private String user_password;  public int getUser_id() {   return user_id;  }  public void setUser_id(int userId) {   user_id = userId;  }  public String getUser_name() {   return user_name;  }  public void setUser_name(String userName) {   user_name = userName;  }  public String getUser_password() {   return user_password;  }  public void setUser_password(String userPassword) {   user_password = userPassword;  }   }

Dao層

package com.dragon.dao;

import java.util.List;

import com.dragon.entity.UserInfo;

public interface UserInfoDao {  public abstract List<UserInfo> getAll();  public abstract int insertUserInfo(UserInfo userInfo); }

實現層

package com.dragon.dao.impl;

import java.util.ArrayList; import java.util.List;

import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import org.springframework.jdbc.core.simple.ParameterizedBeanPropertyRowMapper; import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport;

import com.dragon.dao.UserInfoDao; import com.dragon.entity.UserInfo;

public class UserInfoDaoImpl extends SimpleJdbcDaoSupport implements   UserInfoDao {  /**   * 獲得所有   */  public List<UserInfo> getAll() {   // TODO Auto-generated method stub   List<UserInfo> userInfoList = new ArrayList<UserInfo>();   String sql = "select * from UserInfo";   userInfoList = super.getSimpleJdbcTemplate().query(sql,ParameterizedBeanPropertyRowMapper.newInstance(UserInfo.class));   return userInfoList;  }  /**   * 增加   */  public int insertUserInfo(UserInfo userInfo) {   // TODO Auto-generated method stub   String sql="INSERT INTO UserInfo values(:user_id,:user_name,:user_password)";   //返回受影響的行數   int count = super.getSimpleJdbcTemplate().update(sql, new MapSqlParameterSource().addValue("user_id", userInfo.getUser_id()).addValue("user_name", userInfo.getUser_name()).addValue("user_password", userInfo.getUser_password()));   return count;  }

}

Controller類

package com.dragon.controller;

import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;

import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.AbstractController;

import com.dragon.dao.UserInfoDao; import com.dragon.entity.UserInfo;

/**

*查詢所有

*/

public class UserInfoController extends AbstractController {

 private UserInfoDao userInfoDao;    public UserInfoDao getUserInfoDao() {   return userInfoDao;  }

 public void setUserInfoDao(UserInfoDao userInfoDao) {   this.userInfoDao = userInfoDao;  }  @Override  protected ModelAndView handleRequestInternal(HttpServletRequest arg0,    HttpServletResponse arg1) throws Exception {   // TODO Auto-generated method stub   //定義使用者集合   List<UserInfo> userInfoList = new ArrayList<UserInfo>();   //呼叫獲得所有的方法   userInfoList = this.userInfoDao.getAll();   //建立集合   Map<String,Object> models = new HashMap<String, Object>();   //儲存物件   models.put("userInfoList", userInfoList);   return new ModelAndView("index.jsp",models);  }

}

新增

package com.dragon.controller;

import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;

import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.AbstractController;

import com.dragon.dao.UserInfoDao; import com.dragon.entity.UserInfo;

public class AddUserInfoController extends AbstractController { private UserInfoDao userInfoDao;    public UserInfoDao getUserInfoDao() {   return userInfoDao;  }

 public void setUserInfoDao(UserInfoDao userInfoDao) {   this.userInfoDao = userInfoDao;  }  @Override  protected ModelAndView handleRequestInternal(HttpServletRequest request,    HttpServletResponse response) throws Exception {   // TODO Auto-generated method stub      UserInfo userInfo = new UserInfo();      //獲得使用者的輸入   userInfo.setUser_id(Integer.valueOf(request.getParameter("user_id")));   userInfo.setUser_name(request.getParameter("user_name"));   userInfo.setUser_password(request.getParameter("user_password"));      System.out.println(userInfo.getUser_id());      int i = this.userInfoDao.insertUserInfo(userInfo);   System.out.println(i);   //定義使用者集合   List<UserInfo> userInfoList = new ArrayList<UserInfo>();   //呼叫獲得所有的方法   userInfoList = this.userInfoDao.getAll();   //建立集合   Map<String,Object> models = new HashMap<String, Object>();   //儲存物件   models.put("userInfoList", userInfoList);   return new ModelAndView("index.jsp",models);  }

}

jdbc.properties配置檔案

jdbc.driverClassName=oracle.jdbc.driver.OracleDriver jdbc.url=jdbc:oracle:thin:@localhost:1521:orcl jdbc.username=system jdbc.password=orcl

Web。xml中的配置

<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5"  xmlns="http://java.sun.com/xml/ns/javaee"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"  >      <!-- 配置spring mvc 支援-->  <servlet>   <servlet-name>springapp</servlet-name>   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>   <load-on-startup>1</load-on-startup>  </servlet>  <!-- 配置spring對映 -->  <servlet-mapping>   <servlet-name>springapp</servlet-name>   <url-pattern>*.do</url-pattern>  </servlet-mapping>     <welcome-file-list>     <welcome-file>index.jsp</welcome-file>   </welcome-file-list> </web-app>

springapp-servlet.xml

 <bean id="userController" name="/userController.do" class="com.dragon.controller.UserInfoController">      <property name="userInfoDao" ref="userInfoDao"></property>     </bean>     <bean id="addUserInfoController" name="/add.do" class="com.dragon.controller.AddUserInfoController">      <property name="userInfoDao" ref="userInfoDao"></property>     </bean> <!--  -->  <bean id="userInfoDao"  class="com.dragon.dao.impl.UserInfoDaoImpl">   <property name="dataSource" ref="dataSource"></property>  </bean>

<!-- 配置事務管理器 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">         <property name="driverClassName" value="${jdbc.driverClassName}"/>         <property name="url" value="${jdbc.url}"/>         <property name="username" value="${jdbc.username}"/>         <property name="password" value="${jdbc.password}"/>     </bean> <!-- 載入檔案的路徑 -->     <bean id="propertyConfigurer"           class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">         <property name="locations">             <list>                 <value>classpath:jdbc.properties</value>             </list>         </property>     </bean> <!-- -->     <bean id="transactionManager"           class="org.springframework.jdbc.datasource.DataSourceTransactionManager">         <property name="dataSource" ref="dataSource"/>     </bean>

    <aop:config>             <aop:advisor pointcut="execution(* *com.dragon.dao.*(..))" advice-ref="txAdvice"/>     </aop:config>

    <tx:advice id="txAdvice">         <tx:attributes>                        <tx:method name="get*" read-only="true"></tx:method>    <tx:method name="insert*" propagation="REQUIRED"></tx:method>    <tx:method name="update*" propagation="REQUIRED"></tx:method>    <tx:method name="delete*" propagation="REQUIRED"></tx:method>                 <tx:method name="*" read-only="true"/>         </tx:attributes>     </tx:advice>     

</beans>

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="j" uri="http://java.sun.com/jsp/jstl/core" %>

<% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html>   <head>     <base href="<%=basePath%>">         <title>My JSP 'index.jsp' starting page</title>  <meta http-equiv="pragma" content="no-cache">  <meta http-equiv="cache-control" content="no-cache">  <meta http-equiv="expires" content="0">     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  <meta http-equiv="description" content="This is my page">  <!--  <link rel="stylesheet" type="text/css" href="styles.css">  -->   </head>     <body>   <table>    <tr>     <td>編號</td>     <td>名稱</td>     <td>密碼</td>     <td>操作</td>    </tr>      <j:forEach var="userInfo" items="${userInfoList }" >     <tr>     <td>  <j:out value="${userInfo.user_id}"></j:out> </td>     <td>  <j:out value="${userInfo.user_name}"></j:out></td>     <td>  <j:out value="${userInfo.user_password}"></j:out></td>     <td><a href="" >刪除</a></td>    </tr>         </j:forEach>    <tr >     <td colspan="4"><a href="add.jsp">新增</a></td>    </tr>   </table>   </body> </html>

add.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html>   <head>     <base href="<%=basePath%>">         <title>My JSP 'add.jsp' starting page</title>      <meta http-equiv="pragma" content="no-cache">  <meta http-equiv="cache-control" content="no-cache">  <meta http-equiv="expires" content="0">     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  <meta http-equiv="description" content="This is my page">  <!--  <link rel="stylesheet" type="text/css" href="styles.css">  -->

  </head>     <body>    <form action="add.do" method="post">     編號:<input type="text" value="" name="user_id"/><br/>     名稱:<input type="text" value="" name="user_name"/><br/>     密碼:<input type="text" value="" name="user_password"/><br/>     <input value="提交" type="submit" />    </form>   </body> </html>

訪問的路徑
慢慢的理解 其實這些官方的文件中都是有的  這種方法不是太好 一個操作就需要建立一個controller 類
資料庫指令碼

CREATE TABLE UserInfo( user_id NUMBER(5) PRIMARY KEY NOT NULL, user_name NVARCHAR2(50) , user_password nvarchar2(50) ); insert into UserInfo values(1,'1001','000000'); insert into UserInfo values(2,'1002','000000'); insert into UserInfo values(3,'1003','000000'); insert into UserInfo values(4,'1004','000000'); insert into UserInfo values(5,'1005','000000'); commit;