Mybatis.net + Mysql

项目文件结构

NuGet下载Mybatis.net相关包:IBatisNet

安装完成后,会显示在,在已安装页面。同时,在管理器中的引用列表中,会多出来两个引用文件

IBatisNet.CommonIBatisNet.DataMapper

安装 Mysql.data。

注意:

        安装完成后,在管理器中的引用列表中,会多出来一个引用文件:Mysql.Data文件

        安装时,尽量不要选择太高的版本,否则有可能跟已有的.NET Framework 版本不匹配

创建三层机构

Model层

using System;namespace HrSystem.Model
{/// <summary>/// 系统用户/// </summary>public class SysUser{// 主键idpublic int _id{get; set;}// 唯一编号public string _empNo{get; set;}// 用户名称public string _name{get; set;}// 密码public string _password{get; set;}// 联系电话public string _mobile{get; set;}// 邮件public string _email{get; set;}// 紧急联系人public string _urgentName{get; set;}// 紧急联系电话public string _urgentMobile{get; set;}// 头像地址Urlpublic string _headUrl{get; set;}// 生日public DateTime _birthday{get; set;}// 工作状态:在职离职等【run_type_enum】public int _runType{get; set;}// 入职时间public DateTime _initTime{get; set;}// 备注public string _remark{get; set;}// 创建人工编号public string _createEmpNo{get; set;}// 创建时间public DateTime _createTime{get; set;}// 更新人工号public string _updateEmpNo{get; set;}// 更新时间public DateTime _updateTime{get; set;}public override string ToString(){return string.Format("[Mybatis: id={0}, name={1}]", _id, _name);}}
}

Mapper层(也叫DAO层)

using IBatisNet.DataMapper;
using System;namespace HrSystem.Mappers
{public class MybatisMapper{/// <summary>/// Gets the entity mapper./// </summary>/// <value>The entity mapper.</value>public static ISqlMapper EntityMapper{get{try{ISqlMapper mapper = Mapper.Instance();return mapper;}catch (Exception ex){Console.WriteLine("ex:{0}", ex);throw ex;//return null;}}}}
}

Service层

using System;
using System.Collections.Generic;
using HrSystem.Mappers;
using HrSystem.Model;
using IBatisNet.DataMapper;
namespace mybatisNet
{public class UserService{/// <summary>/// Inserts the mybatis./// </summary>/// <param name="mybatis">Mybatis.</param>public void InsertMybatis(SysUser mybatis){ISqlMapper mapper = MybatisMapper.EntityMapper;try{mapper.Insert("InsertMybatis", mybatis);}catch (Exception ex){Console.WriteLine("ex when InsertMybatis:{0}", ex);}}/// <summary>/// Queries the mybatis./// </summary>/// <returns>The mybatis.</returns>/// <param name="id">Identifier.</param>public SysUser QueryMybatis(int id){ISqlMapper mapper = MybatisMapper.EntityMapper;try{SysUser result = mapper.QueryForObject<SysUser>("QueryMybatis", id);return result;}catch (Exception ex){Console.WriteLine("ex:{0}", ex);return null;}}/// <summary>/// Updates the mybatis./// </summary>/// <returns>The mybatis.</returns>/// <param name="mybatis">Mybatis.</param>public int UpdateMybatis(SysUser mybatis){ISqlMapper mapper = MybatisMapper.EntityMapper;try{int result = mapper.Update("UpdateMybatis", mybatis);return result;}catch (Exception ex){Console.WriteLine("ex:{0}", ex);return 0;}}/// <summary>/// delete list/// </summary>/// <returns>The mybatis.</returns>/// <param name="mybatis">Mybatis.</param>public int DeleteMybatis(SysUser mybatis){ISqlMapper mapper = MybatisMapper.EntityMapper;try{int result = mapper.Delete("DeleteMybatis", mybatis);return result;}catch (Exception ex){Console.WriteLine("ex:{0}", ex);return 0;}}/// <summary>/// query list/// </summary>/// <returns>The mybatis.</returns>/// <param name="mybatis">Mybatis.</param>public IList<SysUser> GetList(){ISqlMapper mapper = MybatisMapper.EntityMapper;IList<SysUser> listBlogContent = mapper.QueryForList<SysUser>("selectAllContent", null);return listBlogContent;}}
}

Controller层(应用层)

using HrSystem.Model;
using mybatisNet;
using System;namespace HrSystem.Forms.UserForms
{public class DealUserSql{public static SysUser GetUserDetailByEmpNo(string businessId){//string sql_str = "select * from sys_user where emp_no = '" + businessId + "';";//Console.WriteLine(sql_str);//return GlobalMysql.GetOneUser(sql_str, true);UserService service = new UserService();//Mybatis mybatis = new Mybatis();//mybatis.Id = 3;//mybatis.Name = "hello mybatis .net update";//service.InsertMybatis(mybatis);//service.Q//service.UpdateMybatis(mybatis);//service.DeleteMybatis(mybatis);Console.WriteLine("result: {0}", service.QueryMybatis(1));return null;}}
}

创建配置文件

右键项目 -> 添加 -> 新建项

映射层Mapper.xml

<?xml version="1.0" encoding="utf-8" ?>
<sqlMap namespace="HrSystem.Mappers"xmlns="http://ibatis.apache.org/mapping"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><resultMaps><resultMap id="BaseResultMap" class="HrSystem.Model.SysUser"><id property="id" column="id" dbType="BIGINT" /><result property="name" column="name" dbType="VARCHAR"/></resultMap></resultMaps><statements><select id="QueryMybatis" resultMap="BaseResultMap" parameterClass="System.Int32">SELECT id, nameFROM `mybatis`WHERE (id = #value#)</select><insert id="InsertMybatis" parameterClass="HrSystem.Model.SysUser">INSERT INTO `mybatis` (id, name) VALUES (#id#, #name#);</insert><delete id="DeleteMybatis" parameterClass="HrSystem.Model.SysUser">DELETE FROM `mybatis`WHERE(id = #id#)</delete><!--<update id="UpdateMybatis" parameterClass="HrSystem.Model.SysUser">UPDATE `mybatis`SETname = #name#WHERE(id = #id#)</update>--></statements>
</sqlMap>

配置属性

Provider.config

注意,此处我使用的是Mysql,

  • 属性:description、assemblyName中,关于版本的信息,需要与MySql.Data的版本号一直,否则报错(找不到程序集还是啥了 忘了)
  • 属性:enabled,需要设置为true,否则报错(找不到Mysql.Data文件还是啥了 忘了)
<?xml version="1.0" encoding="utf-8"?>
<providers xmlns="http://ibatis.apache.org/providers" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><clear/><providername="sqlServer2.0"enabled="true"description="Microsoft SQL Server, provider V2.0.0.0 in framework .NET V2.0"assemblyName="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"connectionClass="System.Data.SqlClient.SqlConnection"commandClass="System.Data.SqlClient.SqlCommand"parameterClass="System.Data.SqlClient.SqlParameter"parameterDbTypeClass="System.Data.SqlDbType"parameterDbTypeProperty="SqlDbType"dataAdapterClass="System.Data.SqlClient.SqlDataAdapter"commandBuilderClass=" System.Data.SqlClient.SqlCommandBuilder"usePositionalParameters="false"useParameterPrefixInSql="true"useParameterPrefixInParameter="true"parameterPrefix="@"allowMARS="false" /><providername="oracle9.2"description="Oracle, Oracle provider V9.2.0.401"enabled="false"assemblyName="Oracle.DataAccess, Version=9.2.0.401, Culture=neutral, PublicKeyToken=89b483f429c47342"connectionClass="Oracle.DataAccess.Client.OracleConnection"commandClass="Oracle.DataAccess.Client.OracleCommand"parameterClass="Oracle.DataAccess.Client.OracleParameter"parameterDbTypeClass="Oracle.DataAccess.Client.OracleDbType"parameterDbTypeProperty="OracleDbType"dataAdapterClass="Oracle.DataAccess.Client.OracleDataAdapter"commandBuilderClass="Oracle.DataAccess.Client.OracleCommandBuilder"usePositionalParameters="false"useParameterPrefixInSql="true"useParameterPrefixInParameter="false"parameterPrefix=":"useDeriveParameters="false"allowMARS="false" /><providername="oracle10.1"description="Oracle, oracle provider V10.1.0.301"enabled="false"assemblyName="Oracle.DataAccess, Version=10.1.0.301, Culture=neutral, PublicKeyToken=89b483f429c47342"connectionClass="Oracle.DataAccess.Client.OracleConnection"commandClass="Oracle.DataAccess.Client.OracleCommand"parameterClass="Oracle.DataAccess.Client.OracleParameter"parameterDbTypeClass="Oracle.DataAccess.Client.OracleDbType"parameterDbTypeProperty="OracleDbType"dataAdapterClass="Oracle.DataAccess.Client.OracleDataAdapter"commandBuilderClass="Oracle.DataAccess.Client.OracleCommandBuilder"usePositionalParameters="true"useParameterPrefixInSql="true"useParameterPrefixInParameter="true"parameterPrefix=":"useDeriveParameters="false"allowMARS="false" /><!--Oracle Support--><providername="oracleClient1.0"description="Oracle, Microsoft provider V1.0.5000.0"enabled="false"assemblyName="System.Data.OracleClient, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"connectionClass="System.Data.OracleClient.OracleConnection"commandClass="System.Data.OracleClient.OracleCommand"parameterClass="System.Data.OracleClient.OracleParameter"parameterDbTypeClass="System.Data.OracleClient.OracleType"parameterDbTypeProperty="OracleType"dataAdapterClass="System.Data.OracleClient.OracleDataAdapter"commandBuilderClass="System.Data.OracleClient.OracleCommandBuilder"usePositionalParameters="false"useParameterPrefixInSql="true"useParameterPrefixInParameter="false"parameterPrefix=":"allowMARS="false" /><!--MySql Support--><providername="MySql"description="MySQL, MySQL provider V6.7.9.0"enabled="true"assemblyName="MySql.Data, Version=6.7.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"connectionClass="MySql.Data.MySqlClient.MySqlConnection"commandClass="MySql.Data.MySqlClient.MySqlCommand"parameterClass="MySql.Data.MySqlClient.MySqlParameter"parameterDbTypeClass="MySql.Data.MySqlClient.MySqlDbType"parameterDbTypeProperty="MySqlDbType"dataAdapterClass="MySql.Data.MySqlClient.MySqlDataAdapter"commandBuilderClass="MySql.Data.MySqlClient.MySqlCommandBuilder"usePositionalParameters = "false"useParameterPrefixInSql = "true"useParameterPrefixInParameter = "true"parameterPrefix="@"/><!--SQLite 3 Support--><provider name="SQLite3"description="SQLite, SQLite.NET provider V0.21.1869.3794"enabled="false"assemblyName="SQLite.NET, Version=0.21.1869.3794, Culture=neutral, PublicKeyToken=c273bd375e695f9c"connectionClass="Finisar.SQLite.SQLiteConnection"commandClass="Finisar.SQLite.SQLiteCommand"parameterClass="Finisar.SQLite.SQLiteParameter"parameterDbTypeClass="System.Data.DbType, System.Data"parameterDbTypeProperty="DbType"dataAdapterClass="Finisar.SQLite.SQLiteDataAdapter"commandBuilderClass="Finisar.SQLite.SQLiteCommandBuilder"usePositionalParameters="false"useParameterPrefixInSql="true"useParameterPrefixInParameter="true"parameterPrefix="@"setDbParameterPrecision="false"setDbParameterScale="false"allowMARS="false" /><!--PostgreSql Support--><providername="PostgreSql0.99.1.0"description="PostgreSql, Npgsql provider V0.99.1.0"enabled="false"assemblyName="Npgsql, Version=0.99.1.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"connectionClass="Npgsql.NpgsqlConnection"commandClass="Npgsql.NpgsqlCommand"parameterClass="Npgsql.NpgsqlParameter"parameterDbTypeClass="NpgsqlTypes.NpgsqlDbType"parameterDbTypeProperty="NpgsqlDbType"dataAdapterClass="Npgsql.NpgsqlDataAdapter"commandBuilderClass="Npgsql.NpgsqlCommandBuilder"usePositionalParameters="false"useParameterPrefixInSql="true"useParameterPrefixInParameter="true"parameterPrefix=":"allowMARS="true" />
</providers>

设置完成后,邮件Providers.config文件,选择属性,进行设置

SqlMap.config

与Providers.config相同的创建步骤

<?xml version="1.0" encoding="utf-8"?>
<sqlMapConfig xmlns="http://ibatis.apache.org/dataMapper"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><!--properties节点通常用于引入在外部定义一些键值对配置文件,以方便在后面统一调用,这样修改的时候,只修改就可以了。它的引入方式有3种:resource: 通过相对路径来确定文件的位置。url:   通过绝对路径来确定文件位置。embedded: 通过嵌入资源方式来确定文件位置。--><!--<properties resource="../../../Files/properties.config"/>--><!--Settings节点里,可以配置以下5个信息:useStatementNamespaces:默认flase,是否使用全局完整命名空间。cacheModelsEnabled :默认true,是否启用缓存。validateSqlMap:默认false,使用启用SqlMapConfig.xsd来验证映射XML文件。useReflectionOptimizer:默认true,是否使用反射机制访问C#中对象的属性。useEmbedStatementParams 是否使用嵌入的方式声明可变参数--><settings><setting useStatementNamespaces="false" /><setting cacheModelsEnabled="true" /></settings><!--db provider配置文件路径--><providers resource="Providers.config"/><database><provider name="MySql" /><dataSource name="net_hr" connectionString="Host=127.0.0.1;UserName=root;Password=root;Database=net_hr;Port=3306;CharSet=utf8;Allow Zero Datetime=true"/></database><!--SqlMaps节点,用于配置映射信息。通常在映射信息写在外部,在这个节点引入。--><sqlMaps><sqlMap resource="Mappers/UserMapper.xml"/></sqlMaps></sqlMapConfig>

配置属性

重新生成解决方案

参考:

参考1:配合本文及参考2一起看(较少)

参考2:前一部分,请配合本文一起看;此文有后续拓展,可以继续深入学习 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/5416.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Stm32CubeMX 为 stm32mp135d 添加网卡 eth

Stm32CubeMX 为 stm32mp135d 添加网卡 eth 一、启用设备1. eth 设备添加2. eth 引脚配置2. eth 时钟配置 二、 生成代码1. optee 配置2. uboot 配置3. linux 配置 bringup 可参考&#xff1a;Stm32CubeMX 生成设备树 一、启用设备 1. eth 设备添加 我这里只启用一个eth设备&…

特斯拉与百度合作;字节正全力追赶AI业务;小红书内测自研大模型

特斯拉中国版 FSD 或与百度合作 根据彭博社的报道&#xff0c;特斯拉将通过于百度公司达成地图和导航协议&#xff0c;扫清在中国推出 FSD 功能的关键障碍。 此前&#xff0c;中国汽车工业协会、国家计算机网络应急技术处理协调中心发布《关于汽车数据处理 4 项安全要求检测情…

【漏洞复现】zookeeper AdminServer 未授权访问漏洞

0x01 产品简介 ZooKeeper 是一个集中式服务&#xff0c;用于维护配置信息、命名、提供分布式同步和提供组服务。ZooKeeper的AdminServer是其管理界面的一部分&#xff0c;通常用于监控ZooKeeper集群的状态和执行一些管理操作。AdminServer提供了Web-based的管理和监控功能&…

大数据中的项目数据采集

Datax介绍 官网&#xff1a; DataX/introduction.md at master alibaba/DataX GitHub DataX 是阿里云 DataWorks数据集成 的开源版本&#xff0c;在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。 DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS…

【算法基础实验】图论-最小生成树Prim的延迟实现

最小生成树-Prim的延迟实现 理论基础 树的基本性质 用一条边连接树中的任意两个顶点都会产生一个新的环&#xff1b; 从树中删去一条边将会得到两棵独立的树。 切分定理的定义 定义。图的一种切分是将图的所有顶点分为两个非空且不重叠的两个集合。横切边 是一条连接两个属…

华为5700配置

恢复出厂设置&#xff0c;清空配置 1、更改名字 system-view sysname tp-10-50-01-04 2、配置管理接口 int vlan 1 ip add 10.50.1.4 255.255.254.0 quit 2、链路汇聚 interface eth-trunk 1 mode lacp quit 3、绑定端口 interface eth-trunk 1 trunkport gigabitethernet …

RTSP,RTP,RTCP

机器学习 Machine Learning&#xff08;ML&#xff09; 深度学习&#xff08;DL&#xff0c;Deep Learning&#xff09; CV计算机视觉&#xff08;computer vision&#xff09; FFMPEG&#xff0c;MPEG2-TS,H.264,H.265,AAC rstp,rtp,rtmp,webrtc onvif,gb28181 最详细的音…

chrome和drive安装包路径

Chrome for Testing availability (googlechromelabs.github.io) 下载Stable下面的包哈

乘用车整车太阳光模拟加速老化试验太阳光模拟器

1.阳光模拟试验介绍 太阳辐射会对室外停放的汽车内外饰件产生热效应和光化学效应&#xff0c;影响汽车内外饰件的外观、性能&#xff0c;对汽车质产生不利影响。按照汽车产环境试验标准的要求&#xff0c;汽车在研制定型之前应进行太阳辐射试验&#xff0c;以考虑其对太阳辐射环…

酷我音乐车机版+v6.0.1.0车机共存会员版【附带安装包下载地址】

简介 很多车机的酷我音乐app有限制&#xff0c;不能完全使用酷我音乐的所有功能。我这里分享一个可以使用全部功能的酷我音乐app&#xff0c;大家可以自行下载。 界面预览 软件下载地址【转存到自己的网盘后即可下载】 网盘地址&#xff1a;https://pan.xunlei.com/s/VNwgzNV…

架设WebSocket的最后一环,如何设置好nginx反向代理

WebScoket都已经完工快一个月&#xff0c;经过一段时间的测试&#xff0c;公司还是准备把服务器换到鹅厂&#xff0c;用EO来解决CDN内容分发和DDOS防护问题&#xff0c;由于EO并不支持URL 路径转发&#xff0c;只支持转发到一个站点的80或则443端口&#xff0c;如果想做路径分发…

设计模式 --6组合模式

文章目录 组合模式应用场景组合模式概念组合模式结构图透明方式和安全方式什么时候使用组合模式公司管理系统使用 组合模式来构架组合模式的好处 组合模式应用场景 整体和部分可以被一致性对待 比如人力资源部 财务部的管理功能可以复用于分公司的功能 可以引入一种 树状的结构…

Springboot+Vue项目-基于Java+MySQL的教学资料管理系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

Linux基础——Linux开发工具(下)_make/makefile

前言&#xff1a;在经过前面两篇学习&#xff0c;大家对Linux开发工具都有一定的了解&#xff0c;而在此之前最重要的两个工具就是vim&#xff0c;gcc。 如果对这两个工具不太了解&#xff0c;可以先阅读这两篇文章&#xff1a; Linux开发工具 (vim) Linux开发工具 (gcc/g) 首先…

数据挖掘之基于K近邻算法的原油和纳斯达克股票数据预测分析

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 在当今日益复杂的金融市场中&#xff0c;准确地预测原油价格和纳斯达克股票市场的走势对于投资者、政…

【JAVA】part5-Java集合

Java 集合 Java集合概述 Java数组的局限性 数组初始化后大小不可变&#xff1b;数组只能按索引顺序存取。 Java的java.util包主要提供了以下三种类型的集合&#xff1a; List&#xff1a;一种有序列表的集合&#xff0c;例如&#xff0c;按索引排列的Student的List&#xff1b…

代码随想录算法训练营DAY43|C++动态规划Part5|1049.最后一块石头的重量II、494.目标和、474.一和零

文章目录 1049.最后一块石头的重量II思路CPP代码 494.目标和回溯算法抽象成01背包问题CPP代码本题总结 474.一和零思路CPP代码 1049.最后一块石头的重量II 力扣题目链接 文章链接&#xff1a;1049.最后一块石头的重量II 视频链接&#xff1a;这个背包最多能装多少&#xff1f;L…

8 聚类算法

目录 0 背景 1 Kmeans 1.1 聚类数量k的确定 2 DBSCAN 2.1 三个点 2.2 算法流程 3 层次聚类 3.1 过程 4 基于分布的聚类:高斯混合模型 0 背景 聚类算法是一种无监督学习技术&#xff0c;用于将数据集中的数据点划分为不同的组或簇&#xff0c;使得同一组内的数据点彼此相…

nginx缓存清理

背景 昨天打开我的gpt镜像网站&#xff0c;意外发现静态图片资源全都无法获取了 CoCo-AI 一番排查下来&#xff0c;发现是引用的cdn链接失效了 且cdn源是属于七牛云的&#xff0c;且不再维护&#xff0c;于是果断切换到cloudflare export function getEmojiUrl(unified: str…

Qt简单离线音乐播放器

有上传本地音乐文件&#xff0c;播放&#xff0c;暂停&#xff0c;拖拉进度条等功能的播放器。 mainwindow.cpp #include "mainwindow.h" #include "ui_mainwindow.h" #include <QMediaPlayer> #include <QFileDialog> #include <QTime&g…