//G3.IDAL层
using System;
using System.Collections.Generic;
using G6.Model;
namespace G3.IDAL
{
public interface IUserDAL
{
int AddUser(T model) where T:class,new();
List<T> GetList<T>() where T : class, new();
}
}
//DBConnection
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Text;
using MySql.Data.MySqlClient;
namespace G6.DAL
{
public abstract class DBConnection
{
private static string conSql= “Data Source=.;Initial Catalog=G6_WeekDB;Integrated Security=True”;
private static string conMySql= “”;
public static IDbConnection GetConnection(string type)
{
IDbConnection connection = null;
if (type.Equals("sql"))
{
connection = new SqlConnection(conSql);
}
else {
connection = new MySqlConnection(conMySql);
}
if (connection.State == ConnectionState.Closed)
{
connection.Open();
}
return connection;
}
}
}
//DAL
using System;
using System.Collections.Generic;
using System.Data;
using System.Text;
using G3.IDAL;
using Dapper;
namespace G6.DAL
{
public class MySqlUserDAL : IUserDAL
{
private IDbConnection connection = DBConnection.GetConnection(“sql”);
public int AddUser(T model) where T : class, new()
{
return connection.Execute("");
}
public List<T> GetList<T>() where T : class, new()
{
return connection.Query<T>("select *from user").AsList();
}
}
}
//DAL
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Reflection;
using G3.IDAL;
using Dapper;
namespace G6.DAL
{
public class SqlUserDAL : IUserDAL
{
private IDbConnection connection = DBConnection.GetConnection(“sql”);
public int AddUser(T model) where T : class, new()
{
return connection.Execute(GetSQLStr(model));
}
public List<T> GetList<T>() where T : class, new()
{
return connection.Query<T>("").AsList();
}
/// <summary>
/// 反射
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="model"></param>
/// <returns></returns>
public string GetSQLStr<T>(T model) where T:class,new()
{
Type type = model.GetType();
string tableName = type.Name.Replace("Model","");
string _fields = "";
string _values = "";
PropertyInfo[] properties = type.GetProperties();
for(int i=0;i<properties.Length;i++)
{
if(properties[i].Name.ToLower().Contains("id"))
{
continue;
}
if(i+1==properties.Length)
{
_fields += properties[i].Name;
_values += "'" + properties[i].GetValue(model) + "'";
}
else
{
_fields += properties[i].Name + ",";
_values += "'" + properties[i].GetValue(model) + "',";
}
}
string sql = $"insert into TB_{tableName}({_fields}) values({_values})";
return sql;
}
}
}
//控制器
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using G3.IDAL;
using G6.Model;
using Microsoft.AspNetCore.Mvc;
namespace G6.WeekOne.MVC.Controllers
{
public class UserController : Controller
{
public IActionResult Index()
{
List<UsersModel> list = new List<UsersModel>();
return View(list);
}
/// <summary>
/// 跳转到用户添加页面
/// </summary>
/// <returns></returns>
public IActionResult AddUser() => View();
/// <summary>
/// 添加用户
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
[HttpPost]
public int AddUser(UsersModel model)
{
IUserDAL dal = Factory.CreateInstance("sql");
return dal.AddUser<UsersModel>(model);
}
}
}