JDCB MyBatis 数据库 之间的工具类

JDBCUtils —> 工具类
1.要导入JDBC jar包
导入位置 web项目在 Web/INT-INF/libs
普通项目 与 src 平级 也就是总目录 的 lib文件夹里
2.工具类 所有的 成员对象 与 方法 写成静态
3. 用静态代码块 目的在加载工具类时一起加载
用加载器 转换文件为输入流
创建Properties集合,加载流对象信息
获取信息为变量赋值
注册驱动
4. 获取数据库连接方法
5. 释放资源方法
6. 工具类 都要写 自己的 空参构造方法

public class JDBCUtils {

    /* JDBC 工具类 */
    //private 私有构造方法
    private JDBCUtils(){}

    //声明变量信息  与 config 配置文件内容保持一直
    private static String driverClass;
    private static String url;
    private static String username;
    private static String password;
    private static Connection con;

    //静态代码块中实现加载配置文件 和 注册驱动

    static{
try{
    //通过本工具类名 用加载器 转换文件为输入流
    InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("config.proeprties");

    //创建Properties集合,加载流对象信息
    Properties prop = new Properties();
    prop.load(is);

    //获取信息为变量赋值
    driverClass = prop.getProperty("driverClass");
    url = prop.getProperty("url");
    username = prop.getProperty("username");
    password = prop.getProperty("password");

    //注册驱动
    Class.forName(driverClass);
}catch(Exception e){
    e.printStackTrace();
}
    }

    //获取数据库连接方法
    public static Connection getConnection(){
        try {
            con = DriverManager.getConnection(url,username,password);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return con;
    }



    //释放资源方法
    public static void close(Connection con, Statement stat, ResultSet rs){
        if (con!=null){
            try {
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if (stat!=null){
            try {
                stat.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if (rs!=null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }


    public static void close(Connection con,Statement stat){

        if (con!=null){
            try {
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if (stat!=null){
            try {
                stat.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

JDBC ----》 数据库连接池
连接池对象 DataSource dataSource;

1.要导入JDBC jar包
要导入 druid jar包
导入位置 web项目在 Web/INT-INF/libs
普通项目 与 src 平级 也就是总目录 的 lib文件夹里
2.工具类 所有的 成员对象 与 方法 写成静态
3. 用静态代码块 目的在加载工具类时一起加载
用加载器 转换文件为输入流
获取连接池
4. 提供获取连接池方法
5. 释放资源方法
6. 工具类 都要写 自己的 空参构造方法

 //创建构造方法
    private JDBCUtilss(){ }

    //声明连接池对象
    private static DataSource dataSource;


    //创建静态代码块 获取连接
    static{
        //获取链接对象
        try {
           //加载配置文件
            InputStream is = JDBCUtilss.class.getClassLoader().getResourceAsStream("druid.properties");
            Properties prop = new Properties();
            prop.load(is);

            //获取连接池
            dataSource  = DruidDataSourceFactory.createDataSource(prop);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    //提供获取连接池方法
    public static Connection getConnection(){
        Connection con = null;
        try {
            con = dataSource.getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
        }
         return con;
    }

//释放资源
    public static void close(Connection con, Statement stat, ResultSet rs){
        if (con!=null){
            try {
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if (stat!=null){
            try {
                stat.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if (rs!=null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    public static void close(Connection con,Statement stat){
        if (con!=null){
            try {
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if (stat!=null){
            try {
                stat.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

MyBatisUtils ---------->工具类
//声明连接工厂对象
private static SqlSessionFactory sqlSessionFactory;

1.要导入JDBC jar包
要导入 mybatis jar包
导入位置 web项目在 Web/INT-INF/libs
普通项目 与 src 平级 也就是总目录 的 lib文件夹里
2.工具类 所有的 成员对象 与 方法 写成静态
3. 用静态代码块 目的在加载工具类时一起加载
静态代码块,读取核心配置文件并获取工厂对象赋值
4. 提供获取连接池方法
5. 释放资源方法
6. 工具类 都要写 自己的 空参构造方法
7.用mybatis 不用写 释放资源的代码

/*工具类*/
    private MyBatisUtils(){}

    //声明连接工厂对象
    private static SqlSessionFactory sqlSessionFactory;

    //静态代码块,读取核心配置文件并获取工厂对象赋值
    static {
        try {
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("MyBatisConfig.xml"));
        } catch (IOException e) {
            e.printStackTrace();
        }}
        
    //提供静态方法 返回SqlSession对象
    public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession(true);//这里true 是自动提交事务
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个简单的Java Web应用程序,它使用JDBC和Servlet连接到Oracle数据库,并从数据库中检索数据,然后将其显示在Web页面上。 前端页面(index.jsp): ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Oracle数据库查询</title> </head> <body> <h1>Oracle数据库查询</h1> <form action="query" method="post"> <input type="text" name="query"> <button type="submit">查询</button> </form> <br> <% if (request.getAttribute("result") != null) { out.println(request.getAttribute("result")); } %> </body> </html> ``` 查询Servlet(QueryServlet.java): ```java import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/query") public class QueryServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String query = request.getParameter("query"); if (query == null || query.trim().isEmpty()) { out.println("请输入查询语句"); return; } Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try { Class.forName("oracle.jdbc.driver.OracleDriver"); conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "username", "password"); stmt = conn.prepareStatement(query); rs = stmt.executeQuery(); StringBuilder sb = new StringBuilder(); sb.append("<table border='1'>"); while (rs.next()) { sb.append("<tr>"); sb.append("<td>").append(rs.getString(1)).append("</td>"); sb.append("<td>").append(rs.getString(2)).append("</td>"); sb.append("<td>").append(rs.getString(3)).append("</td>"); sb.append("</tr>"); } sb.append("</table>"); request.setAttribute("result", sb.toString()); request.getRequestDispatcher("index.jsp").forward(request, response); } catch (ClassNotFoundException e) { out.println("驱动未找到"); e.printStackTrace(); } catch (SQLException e) { out.println("数据库错误"); e.printStackTrace(); } finally { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (stmt != null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } } ``` 在这里,我们使用Oracle JDBC驱动程序连接到本地Oracle数据库(连接字符串为`jdbc:oracle:thin:@localhost:1521:orcl`),并从数据库中检索数据。查询字符串由用户通过Web页面输入,然后Servlet处理该查询并将结果返回到同一页面。 请注意,本示例仅供参考,并不是最佳实践,如需在生产环境中使用,请谨慎评估安全性和性能问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

普希托夫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值