1.mybatisåibatisçåºå«
2.ibatis 源码是什么
3.c#读取Config文件的问题
4.class path resource [ibatis.xml] cannot be opened because it does not exist
5.ibatis起源
mybatisåibatisçåºå«
1ãåºæ¬ä¿¡æ¯ä¸åmybatisï¼MyBatis æ¯ä¸æ¬¾ä¼ç§çæä¹ å±æ¡æ¶ï¼å®æ¯æå®å¶å SQLãåå¨è¿ç¨ä»¥åé«çº§æ å°ãMyBatis é¿å äºå ä¹ææç JDBC 代ç åæå¨è®¾ç½®åæ°ä»¥åè·åç»æéã
MyBatis å¯ä»¥ä½¿ç¨ç®åç XML æ注解æ¥é ç½®åæ å°åçä¿¡æ¯ï¼å°æ¥å£å Java ç POJOs(Plain Ordinary Java Object,æ®éç Java对象)æ å°ææ°æ®åºä¸çè®°å½ã
ibatisï¼iBATISæä¾çæä¹ å±æ¡æ¶å æ¬SQL MapsåData Access Objectsï¼DAOï¼ï¼åæ¶è¿æä¾ä¸ä¸ªå©ç¨è¿ä¸ªæ¡æ¶å¼åçJPetStoreå®ä¾ãç¸å¯¹HibernateåApacheOJBçâä¸ç«å¼âORM解å³æ¹æ¡èè¨ï¼ibatis æ¯ä¸ç§âåèªå¨åâçORMå®ç°ã
iBATIS ç®åæä¾äºä¸ç§è¯è¨å®ç°ççæ¬ï¼å æ¬ï¼Javaã.NET以åRubyã
2ãå¼åæ¶é´ä¸å
mybatisï¼MyBatis æ¬æ¯apacheçä¸ä¸ªå¼æºé¡¹ç®iBatis, å¹´è¿ä¸ªé¡¹ç®ç±apache software foundation è¿ç§»å°äºgoogle codeï¼å¹¶ä¸æ¹å为MyBatis ãå¹´æè¿ç§»å°Githubã
ibatisï¼iBATISä¸è¯æ¥æºäºâinternetâåâabatisâçç»åï¼æ¯ä¸ä¸ªç±Clinton Beginå¨å¹´åèµ·çå¼æ¾æºä»£ç 项ç®ã
3ãé ç½®æ¹æ³ä¸å
mybatisç®åäºç¼ç çè¿ç¨ï¼ä¸éè¦å»ådaoçå®ç°ç±»ï¼ç´æ¥åä¸ä¸ªdaoçæ¥å£ï¼ååä¸ä¸ªxmlé ç½®æ件ï¼æ´ä¸ªmybatiså°±é 置好äºï¼ä¹å°±æ¯æ°æ®åºå°±è¿æ¥å¥½äºï¼ç¶åå¨serviceéé¢ç´æ¥è°ç¨daoå°±å¯ä»¥äºï¼ä½æ¯ibatisåä¸å¯ä»¥ï¼å¿ é¡»è¦ådaoçå®ç°ç±»ãmybatisæ¯ibatisçå级çæ¬ã
åèèµæï¼ç¾åº¦ç¾ç§-mybatis
åèèµæï¼ç¾åº¦ç¾ç§-ibatis
ibatis 是什么
iBATIS一词来源于“internet”和“abatis”的组合,是时间一个由Clinton Begin在年发起的开放源代码项目。最初侧重于密码软件的源码开发,现在是时间一个基于Java的持久层框架。
c#读取Config文件的源码局部VPN源码问题
应用程序配置文件(App.config)是标准的 XML 文件,XML 标记和属性是时间照妖镜iapp源码区分大小写的。它是源码可以按需要更改的,开发人员可以使用配置文件来更改设置,时间而不必重编译应用程序。源码
对于一个config文件:
<?时间xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="ServerIP" value=".0.0.1"></add>
<add key="DataBase" value="WarehouseDB"></add>
<add key="user" value="sa"></add>
<add key="password" value="sa"></add>
</appSettings>
</configuration>
对config配置文件的读写类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Configuration;
using System.ServiceModel;
using System.ServiceModel.Configuration;
namespace NetUtilityLib
{
public static class ConfigHelper
{
//依据连接串名字connectionName返回数据连接字符串
public static string GetConnectionStringsConfig(string connectionName)
{
//指定config文件读取
string file = System.Windows.Forms.Application.ExecutablePath;
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(file);
string connectionString =
config.ConnectionStrings.ConnectionStrings[connectionName].ConnectionString.ToString();
return connectionString;
}
///<summary>
///更新连接字符串
///</summary>
///<param name="newName">连接字符串名称</param>
///<param name="newConString">连接字符串内容</param>
///<param name="newProviderName">数据提供程序名称</param>
public static void UpdateConnectionStringsConfig(string newName, string newConString, string newProviderName)
{
//指定config文件读取
string file = System.Windows.Forms.Application.ExecutablePath;
Configuration config = ConfigurationManager.OpenExeConfiguration(file);
bool exist = false; //记录该连接串是否已经存在
//如果要更改的连接串已经存在
if (config.ConnectionStrings.ConnectionStrings[newName] != null)
{
exist = true;
}
// 如果连接串已存在,首先删除它
if (exist)
{
config.ConnectionStrings.ConnectionStrings.Remove(newName);
}
//新建一个连接字符串实例
ConnectionStringSettings mySettings =
new ConnectionStringSettings(newName,源码 newConString, newProviderName);
// 将新的连接串添加到配置文件中.
config.ConnectionStrings.ConnectionStrings.Add(mySettings);
// 保存对配置文件所作的更改
config.Save(ConfigurationSaveMode.Modified);
// 强制重新载入配置文件的ConnectionStrings配置节
ConfigurationManager.RefreshSection("ConnectionStrings");
}
///<summary>
///返回*.exe.config文件中appSettings配置节的value项
///</summary>
///<param name="strKey"></param>
///<returns></returns>
public static string GetAppConfig(string strKey)
{
string file = System.Windows.Forms.Application.ExecutablePath;
Configuration config = ConfigurationManager.OpenExeConfiguration(file);
foreach (string key in config.AppSettings.Settings.AllKeys)
{
if (key == strKey)
{
return config.AppSettings.Settings[strKey].Value.ToString();
}
}
return null;
}
///<summary>
///在*.exe.config文件中appSettings配置节增加一对键值对
///</summary>
///<param name="newKey"></param>
///<param name="newValue"></param>
public static void UpdateAppConfig(string newKey, string newValue)
{
string file = System.Windows.Forms.Application.ExecutablePath;
Configuration config = ConfigurationManager.OpenExeConfiguration(file);
bool exist = false;
foreach (string key in config.AppSettings.Settings.AllKeys)
{
if (key == newKey)
{
exist = true;
}
}
if (exist)
{
config.AppSettings.Settings.Remove(newKey);
}
config.AppSettings.Settings.Add(newKey, newValue);
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
}
// 修改system.serviceModel下所有服务终结点的IP地址
public static void UpdateServiceModelConfig(string configPath, string serverIP)
{
Configuration config = ConfigurationManager.OpenExeConfiguration(configPath);
ConfigurationSectionGroup sec = config.SectionGroups["system.serviceModel"];
ServiceModelSectionGroup serviceModelSectionGroup = sec as ServiceModelSectionGroup;
ClientSection clientSection = serviceModelSectionGroup.Client;
foreach (ChannelEndpointElement item in clientSection.Endpoints)
{
string pattern = @"\b\d{ 1,3}\.\d{ 1,3}\.\d{ 1,3}\.\d{ 1,3}\b";
string address = item.Address.ToString();
string replacement = string.Format("{ 0}", serverIP);
address = Regex.Replace(address, pattern, replacement);
item.Address = new Uri(address);
}
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("system.serviceModel");
}
// 修改applicationSettings中App.Properties.Settings中服务的IP地址
public static void UpdateConfig(string configPath, string serverIP)
{
Configuration config = ConfigurationManager.OpenExeConfiguration(configPath);
ConfigurationSectionGroup sec = config.SectionGroups["applicationSettings"];
ConfigurationSection configSection = sec.Sections["DataService.Properties.Settings"];
ClientSettingsSection clientSettingsSection = configSection as ClientSettingsSection;
if (clientSettingsSection != null)
{
SettingElement element1 = clientSettingsSection.Settings.Get("DataService_SystemManagerWS_SystemManagerWS");
if (element1 != null)
{
clientSettingsSection.Settings.Remove(element1);
string oldValue = element1.Value.ValueXml.InnerXml;
element1.Value.ValueXml.InnerXml = GetNewIP(oldValue, serverIP);
clientSettingsSection.Settings.Add(element1);
}
SettingElement element2 = clientSettingsSection.Settings.Get("DataService_EquipManagerWS_EquipManagerWS");
if (element2 != null)
{
clientSettingsSection.Settings.Remove(element2);
string oldValue = element2.Value.ValueXml.InnerXml;
element2.Value.ValueXml.InnerXml = GetNewIP(oldValue, serverIP);
clientSettingsSection.Settings.Add(element2);
}
}
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("applicationSettings");
}
private static string GetNewIP(string oldValue, string serverIP)
{
string pattern = @"\b\d{ 1,3}\.\d{ 1,3}\.\d{ 1,3}\.\d{ 1,3}\b";
string replacement = string.Format("{ 0}", serverIP);
string newvalue = Regex.Replace(oldValue, pattern, replacement);
return newvalue;
}
}
}
测试代码如下:
class Program
{
static void Main(string[] args)
{
try
{
//string file = System.Windows.Forms.Application.ExecutablePath + ".config";
//string file1 = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;
string serverIP = ConfigHelper.GetAppConfig("ServerIP");
string db = ConfigHelper.GetAppConfig("DataBase");
string user = ConfigHelper.GetAppConfig("user");
string password = ConfigHelper.GetAppConfig("password");
Console.WriteLine(serverIP);
Console.WriteLine(db);
Console.WriteLine(user);
Console.WriteLine(password);
ConfigHelper.UpdateAppConfig("ServerIP", "..1.");
string newIP = ConfigHelper.GetAppConfig("ServerIP");
Console.WriteLine(newIP);
Console.ReadKey();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
class path resource [ibatis.xml] cannot be opened because it does not exist
å 为å类路å¾èµæº [ibatis.xml] ä¸åå¨ï¼å æ¤ä¸è½æå¼ã
注ï¼
ibatis xml åå«æâibatis æä¹ å±æ¡æ¶âåâå¯æ©å±æ è®°è¯è¨â
ibatis æ¥æºäºâinternetâ åâabatisâ çç»åï¼æ¯ä¸ä¸ªç± Clinton Begin å¨å¹´åèµ·çå¼æ¾æºä»£ç 项ç®ï¼ç°å¨æ¯åºäºJava çæä¹ å±æ¡æ¶ãã
ibatis起源
IBatis,作为一款“半自动化”的时间ORM框架,起源于对传统“一站式”解决方案如Hibernate和Apache OJB的源码YOLOX源码解析补充。它提供SQL Maps和Data Access Objects(DAO)的时间功能,以及一个用于实践的源码示例——JPetStore。 与Hibernate和OJB不同,IBatis并未完全封装数据库结构,nginx 安装源码而是留给开发者更多自由,需要程序员自己编写SQL。这在一定程度上保留了对SQL的控制,适合那些有特定需求的pos销售源码场景,比如:系统设计要求对部分或全部数据保密,仅提供有限的SQL接口。
业务逻辑需在数据库层面通过存储过程实现,如金融行业的规定。
面对高并发和高性能要求,需要精细调整和优化SQL语句。
然而,当面临这些需求时,Hibernate的全面自动化可能不再适用,使用JDBC虽然可以解决问题,但编写冗长的数据库访问代码和手动处理字段读取则显得繁琐。因此,IBatis在这些特定场景下,提供了一种平衡自动化与灵活性的解决方案。扩展资料
iBATIS一词来源于“internet”和“abatis”的组合,是一个由Clinton Begin在年发起的开放源代码项目。最初侧重于密码软件的开发,现在是一个基于Java的持久层框架。