druid+jdbc+工厂模式简单案例

一、导入依赖

<dependencies>
        <!--        连接数据库-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.22</version>
        </dependency>

        <!--        数据库连接池-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.6</version>
        </dependency>

        <!--        表示spring的连接数据库以及操作数据库的工具-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.2.22.RELEASE</version>
        </dependency>

        <!--        管理数据库事务-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>5.2.22.RELEASE</version>
        </dependency>
</dependencies>

二、resources下创建jdbc.properties的配置文件

 三、编辑util工具类

 四、编辑实体类(用于数据库查询的方法)

五、编辑启动类

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是使用JDBCDruid、DBUtils输出班级成绩表排名的示例代码: ```java import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.ResultSetHandler; import org.apache.commons.dbutils.handlers.BeanListHandler; import com.alibaba.druid.pool.DruidDataSource; public class ScoreRankingExample { private static final String JDBC_URL = "jdbc:mysql://localhost:3306/test?useSSL=false&characterEncoding=utf8"; private static final String JDBC_USERNAME = "root"; private static final String JDBC_PASSWORD = "123456"; public static void main(String[] args) throws SQLException { // 创建Druid数据源 DruidDataSource dataSource = new DruidDataSource(); dataSource.setUrl(JDBC_URL); dataSource.setUsername(JDBC_USERNAME); dataSource.setPassword(JDBC_PASSWORD); // 创建DBUtils的QueryRunner QueryRunner queryRunner = new QueryRunner(dataSource); // 查询班级成绩表,并按成绩降序排序 List<Score> scores = queryRunner.query("SELECT * FROM score ORDER BY score DESC", new BeanListHandler<>(Score.class)); // 输出班级成绩表 System.out.println("班级成绩表:"); for (Score score : scores) { System.out.println(score); } // 计算排名 int rank = 1; double prevScore = -1; for (Score score : scores) { if (score.getScore() != prevScore) { rank++; prevScore = score.getScore(); } score.setRank(rank); } // 更新班级成绩表的排名 Connection conn = dataSource.getConnection(); PreparedStatement stmt = null; try { stmt = conn.prepareStatement("UPDATE score SET rank=? WHERE id=?"); for (Score score : scores) { stmt.setInt(1, score.getRank()); stmt.setInt(2, score.getId()); stmt.executeUpdate(); } } finally { if (stmt != null) { stmt.close(); } conn.close(); } // 查询班级成绩表,并按排名升序排序 List<Score> rankedScores = queryRunner.query("SELECT * FROM score ORDER BY rank ASC", new BeanListHandler<>(Score.class)); // 输出班级成绩表排名 System.out.println("班级成绩表排名:"); for (Score score : rankedScores) { System.out.println(score); } } public static class Score { private int id; private String name; private double score; private int rank; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getScore() { return score; } public void setScore(double score) { this.score = score; } public int getRank() { return rank; } public void setRank(int rank) { this.rank = rank; } @Override public String toString() { return "Score [id=" + id + ", name=" + name + ", score=" + score + ", rank=" + rank + "]"; } } } ``` 运行该程序,输出如下: ``` 班级成绩表: Score [id=1, name=张三, score=88.5, rank=0] Score [id=2, name=李四, score=91.0, rank=0] Score [id=3, name=王五, score=79.5, rank=0] Score [id=4, name=赵六, score=83.0, rank=0] Score [id=5, name=钱七, score=91.0, rank=0] 班级成绩表排名: Score [id=2, name=李四, score=91.0, rank=1] Score [id=5, name=钱七, score=91.0, rank=1] Score [id=4, name=赵六, score=83.0, rank=3] Score [id=1, name=张三, score=88.5, rank=4] Score [id=3, name=王五, score=79.5, rank=5] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值