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.rhkb.cn/news/318773.html

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

相关文章

AJ-Report开源数据大屏 verification;swagger-ui RCE漏洞复现

0x01 产品简介 AJ-Report是一个完全开源的BI平台,酷炫大屏展示,能随时随地掌控业务动态,让每个决策都有数据支撑。多数据源支持,内置mysql、elasticsearch、kudu等多种驱动,支持自定义数据集省去数据接口开发,支持17+种大屏组件,不会开发,照着设计稿也可以制作大屏。三…

亚马逊云科技AWS免费证书-EC2服务器设计(含题库)

亚马逊云AWS官方程序员专属免费证书又来了&#xff01;这次证书是关于AWS EC2实例的设计和搭建&#xff0c;EC2作为AWS服务的核心&#xff0c;是学好AWS的第一步。强推没有任何AWS背景和转码的小伙伴去学&#xff01;学完也能变成AWS开发大神&#xff01; 证书名字叫Getting St…

Excel 中用于在一个范围中查找特定的值,并返回同一行中指定列的值 顺序不一样 可以处理吗

一、需求 Excel 中&#xff0c;在一列&#xff08;某范围内&#xff09;查找另一列特定的值&#xff0c;并返回同一行中另一指定列的值&#xff0c; 查找列和返回列的顺序不一样 二、 实现 1、下面是一个使用 INDEX 和 MATCH 函数的例子&#xff1a; 假设你有以下数据&…

领域驱动设计(DDD)笔记(三)后端工程架构

文章链接 领域驱动设计(DDD)笔记(一)基本概念-CSDN博客领域驱动设计(DDD)笔记(二)代码组织原则-CSDN博客领域驱动设计(DDD)笔记(三)后端工程架构-CSDN博客前导 领域驱动设计(Domain Driven Design,简称DDD)是业内主导的业务工程理论。它在各中权威人士被广泛讨论…

【ZYNQ】Zynq 开发流程

Zynq 芯片架构由嵌入式处理器&#xff08;Processing System, PS&#xff09;与可编程逻辑&#xff08;Programmable Logic, PL&#xff09;&#xff0c;以及 PS 与 PL 之间的互联总线组成。本文主要介绍 Xilinx Zynq 芯片开发所使用的软件&#xff0c;包括 Vivado IDE 与 Xili…

ASP.NET网络在线考试系统

摘 要 随着计算机技术的发展和互联网时代的到来&#xff0c;人们已经进入了信息时代&#xff0c;也有人称为数字化时代。数在数字化的网络环境下&#xff0c;学生希望得到个性化的满足&#xff0c;根据自己的情况进行学习&#xff0c;同时也希望能够得到科学的评价&#xff0c…

分布式事务—> seata

分布式事务之Seata 一、什么是分布式事务&#xff1f; 分布式事务是一种特殊类型的事务&#xff0c;它涉及多个分布式系统中的节点&#xff0c;包括事务的参与者、支持事务的服务器、资源服务器以及事务管理器。 在分布式事务中&#xff0c;一次大型操作通常由多个小操作组成…

无人机+无人车:自组网协同技术及应用前景详解

无人车&#xff0c;也被称为自动驾驶汽车、电脑驾驶汽车或轮式移动机器人&#xff0c;是一种通过电脑系统实现无人驾驶的智能汽车。这种汽车依靠人工智能、视觉计算、雷达、监控装置和全球定位系统协同合作&#xff0c;使得电脑可以在没有任何人类主动操作的情况下&#xff0c;…

手撕vector的模拟实现

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇:Solitary_walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”。…

华为云耀云服务器开放端口

博客主页&#xff1a;花果山~程序猿-CSDN博客 关注我一起学习&#xff0c;一起进步&#xff0c;一起探索编程的无限可能吧&#xff01;让我们一起努力&#xff0c;一起成长&#xff01; 目录 一.华为云控制台开放端口 寻找到安全组信息 2. 添加开放的端口信息 3. 检查是否成…

视频编辑软件pitivi基本功之将三个相关视频合并成一个视频

视频编辑软件pitivi基本功之将三个相关视频合并成一个视频 一、素材来源&#xff1a;网站下载 到http://cpc.people.com.cn/GB/67481/435238/437822/437828/437900/index.html下载以下三个视频&#xff0c;鼠标右击视频——另存视频为 庆祝中国共产党成立100周年大会即将开始—…

【开源物联网平台】window环境下搭建调试监控设备环境

&#x1f308; 个人主页&#xff1a;帐篷Li &#x1f525; 系列专栏&#xff1a;FastBee物联网开源项目 &#x1f4aa;&#x1f3fb; 专注于简单&#xff0c;易用&#xff0c;可拓展&#xff0c;低成本商业化的AIOT物联网解决方案 目录 一、使用docker脚本部署zlmediakit 1.1 …

学习中遇到的问题

1.UFUNCTION() 不是所有函数都能加UFUNCTION()修饰&#xff0c;涉及UE反射机制。 2.初始化用{} 初始化列表 3.创建C文件时修改了路径 这时.cpp文件会报错&#xff0c;只需删掉前面多余路径即可

npm install报错

总结&#xff1a;没有安装visual studio 2017以上带有C桌面开发的版本 #开始试错 #报错总信息mingw_x64_win版本 百度网盘链接: link 提取码&#xff1a;3uou #尝试用mingw配置个C编译器&#xff0c;并配置环境变量&#xff0c;失败 #只认可使用VS!GIthub原址: 链接: link 上…

Java_JVM_JVMs

JVM 官方文档说明文档目录 官方文档 JVM Specification 说明 以Java SE 17为标准 文档目录 2&#xff1a;JVM 结构 class文件数据类型 基本数据类型引用数据类型 运行时数据区 栈帧 其他内容 对象的表示浮点数运算特殊方法 初始化方法【实例、类】多态方法 3&#xff…

IDEA 创建Servlet-HelloWorldServlet

servlet 1.创建空项目2.配置web项目3.配置Tomcat4.加载Tomcat包5.创建HelloWorldServlet类6.配置web.xml7.运行get与post请求 1.创建空项目 2.配置web项目 3.配置Tomcat 4.加载Tomcat包 5.创建HelloWorldServlet类 public class controller extends HttpServlet {Override//get…

yolov5-pytorch-Ultralytics训练+预测+报错处理记录

一、前言 玩一段时间大模型&#xff0c;也该回归一下图像识别。本项目用于记录使用基于Ultralytics的yolov5进行目标检测测试。为什么用Ultralytics呢&#xff1f;答案有3 1、其良好的生态&#xff0c;方便我们部署到其它语言和设备上。因此本次测试结论&#xff1a;大坑没有&…

第四篇:记忆的迷宫:探索计算机存储结构的奥秘与创新

记忆的迷宫&#xff1a;探索计算机存储结构的奥秘与创新 1 引言 1.1 计算机存储系统的发展与重要性 在现代计算技术中&#xff0c;存储系统承担着非常关键的角色&#xff0c;它不仅负责信息的持久保存&#xff0c;同时确保高效的数据访问速度&#xff0c;影响着整体系统性能的…

题目:线性代数

问题描述&#xff1a; 解题思路&#xff1a; 列相乘&#xff0c;然后行相加。 注意点&#xff1a;由于元素数据范围最大为1e6&#xff0c;两个元素相乘乘积最大为1e12&#xff0c;如果元素类型为int则在乘的过程中就会爆炸&#xff0c;所以需要开long long类型。 AC代码…

【大语言模型LLM】-基于大语言模型搭建客服助手(2)

&#x1f525;博客主页&#xff1a;西瓜WiFi &#x1f3a5;系列专栏&#xff1a;《大语言模型》 很多非常有趣的模型&#xff0c;值得收藏&#xff0c;满足大家的收集癖&#xff01; 如果觉得有用&#xff0c;请三连&#x1f44d;⭐❤️&#xff0c;谢谢&#xff01; 长期不…