jee、spring、spring mvc、mybatis 学习(六)

来源:互联网 发布:好的码字软件 编辑:程序博客网 时间:2024/06/07 06:12

转载请申明出处:http://blog.csdn.net/qq5132834/article/details/52211902

在完成第五节spring、spring mvc配置文件的分离之后,这节里开始涉及数据库的连接了;连接数据库的方式方法有很多种,下面一一展示出来,在src类文件夹下新建包【com.zuk.database】。

1、JDBC数据库直连 :新建一个【DB.java】类文件;

package com.zuk.database;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;/** * @author 513283439@qq.com * 采用数据JDBC数据库直连的方式 * */public class DB {public static Connection conn = null;/** * 建立数据库连接 * */public static Connection getConnection(){if(conn!=null){return conn;}else{try {//这里建立的是oracle数据连接Class.forName("oracle.jdbc.OracleDriver") ;String url = "jdbc:oracle:thin:@//10.2.12.14:1521/GGRDAT" ;    String username = "username" ;   String password = "password" ;conn = DriverManager.getConnection(url , username , password ) ;    } catch (Exception e) {e.printStackTrace();}   return conn;}}/** * 关闭数据库连接 * */public static void closeConnection(){if(conn!=null){try {conn.close();} catch (SQLException e) {e.printStackTrace();}conn = null;}}}

2、采用【properties】文件的方式配置数据库链接信息,但是这种方式与上一种方式性质是一样,只是将数据库的驱动、url、用户、密码等信息存储在【properties】文件中。

在【src/sources】包中新建一个【jdbc.properties】文件,内容如下:

driver=oracle.jdbc.OracleDriverurl=jdbc:oracle:thin:@//10.2.12.14:1521/GGRDATuser=usernamepassword=password

再在【com.zuk.database】中新建一个【DatabaseProperties.java】类,内容如下。

注意:获取【jdbc.properties】文件的路径的方式。

如果在【WEB-INF】文件夹中的话,则用:

InputStream fis = context.getResourceAsStream("/WEB-INF/classes/jdbc.properties");

package com.zuk.database;import java.io.InputStream;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.util.Properties;/** * @author 513283439@qq.com * 采用properties文件的方式建立JDBC数据库直连的方式 * */public class DatabaseProperties {public static Connection conn = null;/** * 建立数据库连接 * */public static Connection getConnection(){if(conn!=null){return conn;}try {Properties prop = new Properties();//属性集合对象      InputStream fis = DatabaseProperties.class.getClassLoader().getResourceAsStream("sources/jdbc.properties");prop.load(fis);//将属性文件流装载到Properties对象中 String driver =  prop.getProperty("driver");String url = prop.getProperty("url");String user = prop.getProperty("user");String password = prop.getProperty("password"); System.out.println(driver);System.out.println(url);System.out.println(user);System.out.println(password);Class.forName(driver);conn = DriverManager.getConnection(url,user,password );} catch (Exception e) {e.printStackTrace();}return conn;}/** * 关闭数据库连接 * */public static void closeConnection(){if(conn!=null){try {conn.close();} catch (SQLException e) {e.printStackTrace();}conn = null;}}}


3、采用【IoC】容器的方式建立数据链接,方式如下:

3.1新建一个java类【DatabaseJavaBean.java】内容如下:

package com.zuk.database;import java.io.InputStream;import java.sql.Connection;import java.sql.DriverManager;import java.util.Properties;public class DatabaseJavaBean {private String driver = "driver";private String url = "url";private String user = "user";private String password = "password";public DatabaseJavaBean(){}public DatabaseJavaBean(String driver,String url,String user,String password){this.driver = driver;this.url = url;this.user = user;this.password = password;}public void setDriver(String driver) {this.driver = driver;}public void setUrl(String url) {this.url = url;}public void setUser(String user) {this.user = user;}public void setPassword(String password) {this.password = password;}public void showDataInfo(){System.out.println(this.driver);System.out.println(this.url);System.out.println(this.user);System.out.println(this.password);}public Connection getConnection(){Connection conn = null;try {String driver =  this.driver;String url = this.url;String user = this.user;String password = this.password; Class.forName(driver);conn = DriverManager.getConnection(url,user,password );} catch (Exception e) {e.printStackTrace();}return conn;}}

3.2:、在【src/sources】文件夹中新建一个xml文件【database-javabean.xml】,内容如下:

<?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/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsd"><bean id="databaseJavaBean" class="com.zuk.database.DatabaseJavaBean"><property name="driver" value="oracle.jdbc.OracleDriver" /><property name="url" value="jdbc:oracle:thin:@//10.2.12.14:1521/GGRDAT" /><property name="user" value="user" /><property name="password" value="password" /></bean></beans>

注意:bean的初始化采用【property】标签初始化,所以对于【com.zuk.database.DatabaseJavaBean.java】类的属性必须添加【set】方法。


3.3、将【database-javabean.xml】文件注入【IoC】的方式有两种,一种是手动注入;一种是自动注入;

手动注入:

/** * 通过javabean的方式 * */private Connection getConnection(){//将其加入IOC容器中ApplicationContext context = new ClassPathXmlApplicationContext("sources/database-javabean.xml");DatabaseJavaBean javaBean = (DatabaseJavaBean) context.getBean("databaseJavaBean");javaBean.showDataInfo();return javaBean.getConnection();}

自动注入:

在【web.xml】文件中添加,路径是【classpath:sources/database-javabean.xml】:

  <!-- 加载spring配置文件 -->  <context-param><param-name>contextConfigLocation</param-name><param-value>classpath:sources/spring.xml,classpath:sources/database-javabean.xml</param-value>  </context-param>

然后采用【@Autowired】的方式使用

@Autowiredpublic DatabaseJavaBean databaseJavaBean;

4、综上所述,数据库连接的方式如下:

package com.zuk.services;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframework.stereotype.Component;import com.zuk.database.DB;import com.zuk.database.DatabaseJavaBean;import com.zuk.database.DatabaseProperties;/** * @author 513283439@qq.com * */@Componentpublic class UserService {@Autowiredpublic DatabaseJavaBean databaseJavaBean;public final static String TAG = "com.zuk.services.UserService";public UserService(){}public void showTag(){System.out.println(TAG);}public boolean isExist(String usid1,String pawd1){//Connection conn = DB.getConnection();//Connection conn = DatabaseProperties.getConnection();//Connection conn = this.getConnection();Connection conn = this.databaseJavaBean.getConnection();//采用web.xml自动注入的方式this.db(conn);return true;}/** * 通过javabean的方式 * */private Connection getConnection(){//将其加入IOC容器中ApplicationContext context = new ClassPathXmlApplicationContext("sources/database-javabean.xml");DatabaseJavaBean javaBean = (DatabaseJavaBean) context.getBean("databaseJavaBean");javaBean.showDataInfo();return javaBean.getConnection();} //直连private void db(Connection conn){try {conn = DB.getConnection();//conn = DatabaseProperties.getConnection();String sql = "select t.usid,t.pawd,t.prnm from login t where t.usid = 'b180121'";PreparedStatement pstm = conn.prepareStatement(sql);ResultSet res = pstm.executeQuery();while(res.next()){String usid = res.getString("usid").trim();String pawd = res.getString("pawd").trim();String prnm = res.getString("prnm").trim();System.out.println(usid+"/"+prnm);}if(pstm!=null){pstm.close();}if(res!=null){res.close();}} catch (Exception e) {e.printStackTrace();}finally{try {conn.close();} catch (Exception e2) {e2.printStackTrace();}}}}

5、上面的【database-javabean.xml】文件中数据库配置的方式,可以更进一不优化,直接关联【jdbc.properties】中的数据。具体怎么操作实现呢?如下:

5.1、在【spring.xml】文件中添加;

<!-- 引入属性文件 --> <context:property-placeholder location="classpath:jdbc.properties" />

内容如下:

<?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/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsd"><!-- 引入属性文件 --><context:property-placeholder location="classpath:jdbc.properties" /><!-- service包(自动注入) --><context:component-scan base-package="com.zuk.services" /><!-- 扫描com.zuk.services这个包里所以的service类,【务必在类上标注:@Component】,此时可以采用@Autowired实现自动注入这个包里面全部的对象     --></beans>
5.2、在【database-javabean.xml】中修改如下:

<?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/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsd"><bean id="databaseJavaBean" class="com.zuk.database.DatabaseJavaBean"><property name="driver" value="${driver}" /><property name="url" value="${url}" /><property name="user" value="${user}" /><property name="password" value="${password}" /></bean></beans>


6、源代码:http://download.csdn.net/detail/qq5132834/9605733






0 0
原创粉丝点击