mysql 数据库dbhelp_数据库链接助手-DBHelp

BeanPropertyRowMapper:整个单表查询

ColumnRowmapper:单列查询

MapRowMapper:多列查询

Rowmapper:结果集接口

DBHelp:数据库查询帮助类

ConnectionManager:数据库连接帮助类

1.[文件] BeanPropertyRowMapper.java ~ 1KB     下载(10)

package com.kaishengit.db.rowmapper;

import java.lang.reflect.InvocationTargetException;

import java.lang.reflect.Method;

import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

import java.sql.SQLException;

public class BeanPropertyRowMapper implements RowMapper{

private Class> clazz;

public BeanPropertyRowMapper(Class> clazz) {

this.clazz = clazz;

}

@SuppressWarnings("unchecked")

@Override

public T mapRow(ResultSet rs) throws SQLException {

ResultSetMetaData rsmd = rs.getMetaData();

Object obj = null;

try {

obj = clazz.newInstance();

for(int i = 1;i <= rsmd.getColumnCount();i++) {

String columnName = rsmd.getColumnLabel(i);

Object columnValue = rs.getObject(columnName);

setPropertyValue(obj,columnName,columnValue);

}

} catch (Exception e) {

e.printStackTrace();

}

return (T)obj;

}

private void setPropertyValue(Object obj,String columnName, Object columnValue) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {

String methodName = "set"+columnName.substring(0,1).toUpperCase()+columnName.substring(1);

Method[] methods = clazz.getMethods();

for(Method method : methods) {

if(methodName.equals(method.getName())) {

method.invoke(obj, columnValue);

break;

}

}

}

}

2.[文件] ColumnRowMapper.java ~ 312B     下载(9)

package com.kaishengit.db.rowmapper;

import java.sql.ResultSet;

import java.sql.SQLException;

public class ColumnRowMapper implements RowMapper{

@SuppressWarnings("unchecked")

@Override

public T mapRow(ResultSet rs) throws SQLException {

T t = (T) rs.getObject(1);

return t;

}

}

3.[文件] MapRowMapper.java ~ 686B     下载(9)

package com.kaishengit.db.rowmapper;

import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

import java.sql.SQLException;

import java.util.HashMap;

import java.util.Map;

public class MapRowMapper implements RowMapper> {

@Override

public Map mapRow(ResultSet rs) throws SQLException {

Map map = new HashMap();

ResultSetMetaData rsmd = rs.getMetaData();

for(int i = 1;i <= rsmd.getColumnCount();i++) {

String columnName = rsmd.getColumnLabel(i);

Object columnValue = rs.getObject(columnName);

map.put(columnName, columnValue);

}

return map;

}

}

4.[文件] RowMapper.java ~ 192B     下载(10)

package com.kaishengit.db.rowmapper;

import java.sql.ResultSet;

import java.sql.SQLException;

public interface RowMapper {

public T mapRow(ResultSet rs) throws SQLException;

}

5.[文件] ConnectionManager.java ~ 658B     下载(13)

package com.kaishengit.db;

import java.sql.Connection;

import java.sql.DriverManager;

/**

* 关键数据库连接类

* @author kaishengit

*

*/

public class ConnectionManager {

private static final String DRIVER = "com.mysql.jdbc.Driver";

private static final String URL = "jdbc:mysql:///db_1310";

private static final String NAME = "root";

private static final String PASSWORD = "root";

public static Connection getConnection() {

Connection conn = null;

try {

Class.forName(DRIVER);

conn = DriverManager.getConnection(URL, NAME, PASSWORD);

} catch (Exception e) {

e.printStackTrace();

}

return conn;

}

}

6.[文件] DBHelp.java ~ 3KB     下载(9)

package com.kaishengit.db;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.ArrayList;

import java.util.List;

import com.kaishengit.db.rowmapper.RowMapper;

public class DBHelp {

/**

* 用来执行insert update delete语句

* @param sql

*/

public static void executeSQL(String sql,Object... params) {

Connection conn = ConnectionManager.getConnection();

PreparedStatement stat = null;

try {

stat = conn.prepareStatement(sql);

for (int i = 0; i < params.length; i++) {

stat.setObject(i+1, params[i]);

}

stat.executeUpdate();

} catch (SQLException e) {

e.printStackTrace();

} finally {

close(null,stat,conn);

}

}

/**

* 用来执行select语句,仅返回一个记录对象

* @param sql

* @param mapper

* @param params

* @return

*/

public static T queryForObject(String sql,RowMapper mapper,Object... params) {

Connection conn = ConnectionManager.getConnection();;

PreparedStatement stat = null;

ResultSet rs = null;

T obj = null;

try {

stat = conn.prepareStatement(sql);

for (int i = 0; i < params.length; i++) {

stat.setObject(i+1, params[i]);

}

rs = stat.executeQuery();

while(rs.next()) {

obj = mapper.mapRow(rs);

}

} catch (SQLException e) {

e.printStackTrace();

} finally {

close(rs,stat,conn);

}

return obj;

}

public static List queryForList(String sql,RowMapper mapper,Object... params) {

Connection conn = ConnectionManager.getConnection();;

PreparedStatement stat = null;

ResultSet rs = null;

List list = new ArrayList();

try {

stat = conn.prepareStatement(sql);

for (int i = 0; i < params.length; i++) {

stat.setObject(i+1, params[i]);

}

rs = stat.executeQuery();

while(rs.next()) {

T obj = mapper.mapRow(rs);

list.add(obj);

}

} catch (SQLException e) {

e.printStackTrace();

} finally {

close(rs,stat,conn);

}

return list;

}

private static void close(ResultSet rs,Statement stat,Connection conn) {

try {

if(rs != null) {

rs.close();

}

} catch (SQLException e) {

e.printStackTrace();

} finally {

try {

if(stat != null) {

stat.close();

}

} catch (SQLException e) {

e.printStackTrace();

} finally {

try {

if(conn != null) {

conn.close();

}

} catch (SQLException e) {

e.printStackTrace();

}

}

}

}

}

在 .NET Core 中,可以使用配置文件来存储数据库连接字符串和其他相关的配置信息。首先,在项目中添加一个 `appsettings.json` 文件,并添加以下内容: ```json { "ConnectionStrings": { "DefaultConnection": "Data Source=myserver;Initial Catalog=mydatabase;User ID=myuser;Password=mypassword;" } } ``` 上述代码中,我们定义了一个名为 `DefaultConnection` 的数据库连接字符串。接下来,在 `Startup.cs` 文件中,添加以下代码: ```csharp using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; public class Startup { public IConfiguration Configuration { get; } public Startup(IConfiguration configuration) { Configuration = configuration; } public void ConfigureServices(IServiceCollection services) { services.Configure<ConnectionStringOptions>(Configuration.GetSection("ConnectionStrings")); services.AddSingleton<IDbConnectionFactory, DbConnectionFactory>(); services.AddScoped<IDbHelper, DbHelper>(); } } ``` 在上述代码中,我们首先注入 `IConfiguration` 接口,并将其保存在 `Configuration` 属性中。然后,我们使用 `services.Configure` 方法从配置文件中读取 `ConnectionStrings` 配置节点,并将其绑定到名为 `ConnectionStringOptions` 的选项类上。接下来,我们注册一个 `IDbConnectionFactory` 的实现类 `DbConnectionFactory` 和一个 `IDbHelper` 的实现类 `DbHelper`,用于连接数据库和执行SQL语句。 在 `DbConnectionFactory` 类中,可以使用以下代码来读取配置文件中的连接字符串: ```csharp using System.Data; using Microsoft.Extensions.Options; public class DbConnectionFactory : IDbConnectionFactory { private readonly string _connectionString; public DbConnectionFactory(IOptions<ConnectionStringOptions> options) { _connectionString = options.Value.DefaultConnection; } public IDbConnection CreateConnection() { return new SqlConnection(_connectionString); } } ``` 在上述代码中,我们使用 `IOptions<ConnectionStringOptions>` 来获取配置文件中的 `DefaultConnection` 连接字符串,并将其保存在 `_connectionString` 字段中。然后,我们实现 `IDbConnectionFactory` 接口,并在 `CreateConnection` 方法中返回一个新的 `SqlConnection` 实例。 最后,在 `DbHelper` 类中,可以使用以下代码来执行 SQL 语句: ```csharp using System.Collections.Generic; using System.Data; using Dapper; public class DbHelper : IDbHelper { private readonly IDbConnectionFactory _connectionFactory; public DbHelper(IDbConnectionFactory connectionFactory) { _connectionFactory = connectionFactory; } public IEnumerable<T> Query<T>(string sql, object parameters = null) { using (var connection = _connectionFactory.CreateConnection()) { return connection.Query<T>(sql, parameters); } } public int Execute(string sql, object parameters = null) { using (var connection = _connectionFactory.CreateConnection()) { return connection.Execute(sql, parameters); } } } ``` 在上述代码中,我们使用 `IDbConnectionFactory` 接口来创建一个 `SqlConnection` 实例,然后使用 Dapper 执行 SQL 查询和更新操作。 至此,我们就可以使用配置文件来实现链接数据库并且搭配 DBhelp 来实现了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值