Mybatis.net + Mysql

news2024/11/20 6:28:44

项目文件结构

NuGet下载Mybatis.net相关包:IBatisNet

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

IBatisNet.Common

IBatisNet.DataMapper

安装 Mysql.data。

注意:

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

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

创建三层机构

Model层

using System;

namespace HrSystem.Model
{
    /// <summary>
    /// 系统用户
    /// </summary>
    public class SysUser
    {
        // 主键id
        public 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;
        }

        // 头像地址Url
        public 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, name
			FROM `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`
			SET
			name = #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/>

	<provider
    name="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" />
	<provider
	  name="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" />
	<provider
	  name="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-->
	<provider
	  name="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-->
	<provider
	  name="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-->
	<provider
	  name="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.coloradmin.cn/o/1636623.html

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

相关文章

谷粒商城实战(020 RabbitMQ-消息确认)

Java项目《谷粒商城》架构师级Java项目实战&#xff0c;对标阿里P6-P7&#xff0c;全网最强 总时长 104:45:00 共408P 此文章包含第258p-第p261的内容 消息确认 生产者 publishers 消费者 consumers 设置配置类 调用api 控制台 抵达brocker 代理 新版本ReturnCallbac…

【opencv4.8.1 源码编译】windows10 OpenCV 4.8.1源码编译并实现 CUDA 12加速

Windows 下使用 CMake3.29.2 Visual Studio 2022 编译 OpenCV 4.8.1 及其扩展模块cuda12.0teslaT4显卡 记录自己在编译时踩过的坑&#xff0c;避免下次再犯或者给有需要的人。 在实际使用中&#xff0c;如果是对处理时间要求比较高的场景&#xff0c;使用OpenCV处理图片数据很…

虚拟机安装与配置win7

一、安装镜像 Windows7 64位 ed2k://|file|cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso|3420557312|B58548681854236C7939003B583A8078|/ 建议迅雷下载 二、VMware 安装win7 1.新创自定义虚拟机 2.默认即可 3.iso文件我们自己下载&#xff0c;选择一个空的磁盘 4.…

Java 使用 Maven 编译时插件提示 拷贝错误

提示的具体信息为&#xff1a; [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.3.1:resources (default-resources) on project core-java-8: filtering C:\WorkDir\Repository\iSharkfly-Docs\java-tutorials\core-java-modules\core-jav…

《架构风清扬-Java面试系列第25讲》聊聊ArrayBlockingQueue的特点及使用场景

ArrayBlockingQueue是BlockingQueue接口的一个实现类之一 这个属于基础性问题&#xff0c;老规矩&#xff0c;我们将从使用场景和代码示例来进行讲解 来&#xff0c;思考片刻&#xff0c;给出你的答案 1&#xff0c;使用场景 实现&#xff1a;基于数组实现的有界阻塞队列&…

【Web UI自动化】Python+Selenium 环境配置

安装Python 官网地址&#xff1a;https://www.python.org/&#xff0c;Downloads菜单下选择适合自己的系统版本&#xff0c;我的是Windows。 点击进入以后&#xff0c;可以看到当前最新版本。 点击上面的链接&#xff0c;页面下滑&#xff0c;找到下载链接&#xff0c;根据…

解锁 LLM 新高度,拓宽模型新边界 —— OpenVINO™ 2024.1 赋能生成式 AI 高效运行...

点击蓝字 关注我们,让开发变得更有趣 作者 | 武卓博士 英特尔 OpenVINO™ 布道师 排版 | 李擎 Hello&#xff0c; OpenVINO™ 2024.1 欢迎来到 OpenVINO™ 2024.1! OpenVINO™ 工具套件的每一次升级&#xff0c;都意味着我们在 AI 推理与部署的前沿领域迈出了新的步伐&#x…

【算法刷题 | 动态规划01】5.01(动态规划理论基础、斐波那契数、爬楼梯、使用最小花费爬楼梯)

文章目录 1.动态规划理论基础1.1题目分类大纲1.2什么是动态规划&#xff1f;1.3背包问题1.4解题步骤1.5动态规划应该如何debug&#xff1f; 2.斐波那契数2.1题目2.2解法&#xff1a;动态规划2.2.1动态规划思路&#xff08;1&#xff09;确定dp数组以及下标的含义&#xff08;2&…

SQL如何利用Bitmap思想优化array_contains()函数

目录 0 问题描述 1 位图思想 2 案例实战 3 小结 0 问题描述 在工作中&#xff0c;我们往往使用array_contains()函数来进行存在性问题分析&#xff0c;如判断某个数是否在某个数组中&#xff0c;但是当表数据量过多&#xff0c;存在大量array_contains()函数时&#xff0c;…

PHP定时任务框架taskPHP3.0学习记录7宝塔面板手动可以执行自动无法执行问题排查及解决方案(sh脚本、删除超过特定天数的日志文件、kill -9)

PHP定时任务框架taskPHP3.0学习记录 PHP定时任务框架taskPHP3.0学习记录1&#xff08;TaskPHP、执行任务类的实操代码实例&#xff09;PHP定时任务框架taskPHP3.0学习记录2&#xff08;环境要求、配置Redis、crontab执行时间语法、命令操作以及Screen全屏窗口管理器&#xff0…

无缝对接配电自动化:IEC104转OPC UA网关解决方案

随着水电厂自动化发展的要求&#xff0c;具有一定规模的梯级水电站越来越多&#xff0c;为了实现水电站的无人值班(少人值守)&#xff0c;并考虑到节能控制&#xff0c;电厂采用了集中监控。集中监控关注的是整个电网的安全稳定运行及电压、频率和整个电网的电力需求&#xff0…

中科院突破:TalkingGaussian技术实现3D人脸动态无失真,高效同步嘴唇运动!

DeepVisionary 每日深度学习前沿科技推送&顶会论文分享&#xff0c;与你一起了解前沿深度学习信息&#xff01; 引言&#xff1a;探索高质量3D对话头像的新方法 在数字媒体和虚拟互动领域&#xff0c;高质量的3D对话头像技术正变得日益重要。这种技术能够在虚拟现实、电影…

好看流光风格个人主页源码下载

这是一款美观流光作风个人主页HTML源码&#xff0c;觉得挺喜欢的&#xff0c;需求的自行下载&#xff01; 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/89105857 更多资源下载&#xff1a;关注我。

JAVA前端快速入门基础_javascript入门(02)

写在前面:本文用于快速学会简易的JS&#xff0c;仅做扫盲和参考作用 1.JavaScript函数 什么是函数:执行特定任务的代码块 1.1定义&#xff1a; 使用function来进行定义(类似于python里面的def 或者java和c里面的void&#xff0c;int这些返回类型开头)。定义规则如下: func…

开源、轻量、易用的服务器实时监控工具:哪吒探针

本文首发于只抄博客&#xff0c;欢迎点击原文链接了解更多内容。 前言 哪吒探针是一个开源、轻量、易用的服务器监控、运维工具&#xff0c;它有以下几个特点&#xff1a; 一键安装&#xff1a;可以一键安装面板与 Agent&#xff0c;并且支持 Linux、Windows、MacOS、OpenWRT…

【HMGD】使用CubeMx配置GD32F303系列单片机进行DMA ADC

原理图查看 查原理图可以看到GD32F103C8T6的官方开发板GD32303C-START-V1.0的PA1没有接任何东西 使用PA1作为ADC端口 CubeMX配置ADC和时钟 配置ADC通道 启用循环模式 配置此通道ADC分频 配置ADC DMA为循环模式 配置时钟 可根据手册配置最大HZ GD32F303最高频率设定 生成…

使用SDRPI运行openwifi和设置网口

目录 一 制作启动盘 二 使用串口的方式启动openwifi 三 无线连接 四 网口设置&#xff0c;有线连接 五 使用SSH登录 一 制作启动盘 在github上下载img文件&#xff0c;由于github上下载速度比较慢&#xff0c;我会上传网盘链接 githun下载img文件地址: https://git…

【Schrödinger薛定谔软件使用实战】- 4lyw蛋白实战

文章目录 软件选择1 pretein preparation1.1 import and process注意1.1.1 preprocess可能遇到的问题 1.2 review and modify1.3 refine1.3.1 optimize优化氢键网络1.3.2 minimize 氢原子会进行能量最小化 2 ligand prepare3 生成对接盒子-receptor grid generation3.1 recepto…

假设检验随想

⭐️ 前言 你会吵架吗&#xff1f;你会用数学吵架吗&#xff0c;不会的话就过来看看吧&#xff0c;哈哈 西方人发明了现代意义上的概率论&#xff0c;于是就想把它推广到生产和生活中。借助一大堆的概率论中的概念&#xff0c;他们发明了假设检验&#xff0c;想利用有限的数据…

Unity 实现新手引导遮罩

Unity 复写OnPopulateMesh 实现新手引导遮罩、包含点击事件触发区域判断 https://download.csdn.net/download/shenliang34/89247117