星空网 > 软件开发 > ASP.net

IBatis.net在asp.net MVC下的使用

IBatis.net 是2001年发起的开源项目,它是一个轻量级的ORM框架,现在IBati.NET已经是属于Apache下的一个子项目了,最新版本是1.6.2.

官方网站:http://www.mybatis.org/

.net项目下载地址:http://code.google.com/p/mybatisnet/

DataMapper:通过配置映射关系的

DataAcces:简单的说就是IBatis的数据访问层.

这里通过一个简单的增删改查案例 进行学习 Ibatis.net的配置和使用

一、首先需要下载Ibatis.net 的dll.上面的官网估计下载不下来,所以这儿我自己上传了一份

下载地址:

IBatis.net1.9.2&1.6.2最新版本 

本项目的 Demo:

asp.net MVC和IBatis.net整合demo程序

本项目的数据库

asp.net MVC和IBatis.net整合demo数据库部分

 

二、使用VS 2013新建一个解决方案。

首先使用sqlserver2014 建立数据库表

数据库:UserDemoDb

IBatis.net在asp.net MVC下的使用

并建立相关的架构  如图所示

IBatis.net在asp.net MVC下的使用

 

IBatisDemo.Dao 提供一个统一的Mapper访问接口,

IBatisDemo.Model 数据实体

IBatisDemo.Service 数据操作

因为是做Demo没有对整体架构做过多的细节设置.

 

三、IBatis.net配置

web层拷贝的配置文件,这些文件在 Ibatis.net1.9.2的程序中 解压就有

IBatis.net在asp.net MVC下的使用

providers.config 这个直接拷贝到根目录,该文件定义各种数据库的驱动,包括SqlServer, Oracle, MySQL, PostgreSQL, DB2 and OLEDB, ODBC 等。

sqlmap.config 就是非常核心的一个配置文件,主要配置了数据库访问字符串,settings设置,以及配置实体类和数据库表相关

还有一个database.config 文件,它是配置一些在sqlmap中用到得参数.

添加对Ibatis dll的引用

IBatis.net在asp.net MVC下的使用

sqlmap.config配置:

<?

  

先配置网站根目录下的Maps/UserInfo.

<?

  

说明:

statements 节点:

IBatis.net在asp.net MVC下的使用

在这些容器标签中有一些常用的属性如下所示

IBatis.net在asp.net MVC下的使用

resultMap和resultclass对比:

1、resultMap属于直接映射,可以把结果集中的数据库字段与实体类中的属性一一对应,这样通过select语句得到的结果就会准确的对上号

2、resultclass属于隐身映射,虽然你指定resultclass=“”,具体某一个类,但是select语句得到的结果是一条实力记录,但如果数据库字段与类的属性名字不一致,这个时候就会出现映射错误,有一种方式可以解决就是在写select语句时,给每个字段用as运算符取名字与属性一样:例如:select realname as name...其中realname是字段列名,name是属性字段名

3、resultmap比resultclass性能要高。尽量使用resultmap

insert标签下的selectKey  是表示返回刚插入数据的主键id,具体说明如下

<!-- 为了使insert操作能够返回插入记录的id,必须为insert写一个selectKey 

建立数据库实体类:UserInfo.cs
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace IBatisDemo.Model{  public class UserInfo  {    public int Id { get; set; }    public string UserName { get; set; }    public int Age { get; set; }  }}

  Mapper.cs 获取Mapper的对象类:

using IBatisNet.Common.Utilities;using IBatisNet.DataMapper;using IBatisNet.DataMapper.Configuration;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace IBatisDemo.Dao{  public class Mapper  {    private static volatile ISqlMapper _mapper = null;    protected static void Configure(object obj)    {      _mapper = null;    }    protected static void InitMapper()    {      ConfigureHandler handler = new ConfigureHandler(Configure);      DomSqlMapBuilder builder = new DomSqlMapBuilder();      _mapper = builder.ConfigureAndWatch(handler);    }    public static ISqlMapper Instance()    {      if (_mapper == null)      {        lock (typeof(SqlMapper))        {          if (_mapper == null) // double-check          {            InitMapper();          }        }      }      return _mapper;    }    public static ISqlMapper Get()    {      return Instance();    }    /// <summary>    /// RealMarket Mapper    /// </summary>    public static ISqlMapper GetMaper    {      get      {        if (_mapper == null)        {          lock (typeof(ISqlMapper))          {            if (_mapper == null)            {              ConfigureHandler hander = new ConfigureHandler(Configure);              DomSqlMapBuilder builder = new DomSqlMapBuilder();              _mapper = builder.ConfigureAndWatch("SqlMap.config", hander);            }          }        }        return _mapper;      }    }  }}

  然后再Service里面建立UserInfoService.cs 数据访问

using IBatisDemo.Dao;using IBatisDemo.Model;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.IO;using System.Data.SqlClient;namespace IBatisDemo.Service{  public class UserInfoService  {    public int UserInfoInsertOne(UserInfo userInfo)    {      Object obj = Mapper.GetMaper.Insert("UserInfo.insert_UserInfoOne", userInfo);      return (int)obj;    }    public UserInfo GetUserInfo(int id)    {      return (UserInfo)Mapper.GetMaper.QueryForObject("UserInfo.select_UserInfoOne", id);    }    public IList<UserInfo> GetUserInfoList()    {      //

  最后在web层 controller文件夹下建立 HomeController.cs   控制器

using IBatisDemo.Service;using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;using IBatisDemo.Model;namespace IBatisDemo.Controllers{  public class HomeController : Controller  {    //    // GET: /Home/    UserInfoService service = new UserInfoService();    #region 显示员工		 	    public ActionResult Index()    {            IList<UserInfo> userInfos = service.GetUserInfoList();      ViewData["list"] = userInfos;      return View();    }    #endregion    #region 添加员工        [HttpGet]    public ActionResult UserInsert()    {      return View();    }    [HttpPost]    public ActionResult UserInsert(UserInfo userInfo)    {      userInfo.UserName = Request["UserName"];      userInfo.Age = int.Parse(Request["Age"]);      if (service.UserInfoInsertOne(userInfo) > 0)      {        return Redirect("Index");      }      else      {        return Content("添加失败");      }    }    #endregion    #region 删除员工        public ActionResult delUserInfo(int id)    {      id = int.Parse(Request["Id"]);      if (service.DelUserInfoOne(id) > 0)      {        return Redirect("Index");      }      else      {        return Content("删除失败");      }    }    #endregion    #region 编辑员工资料    [HttpGet]    public ActionResult getUserInfo(int Id)    {      Id = int.Parse(Request["Id"]);      UserInfo userInfos = service.GetUserInfo(Id);      //ViewData["user"] = userInfos;      return View(userInfos);    }    [HttpPost]    public ActionResult getUserInfo(UserInfo userInfo)    {      userInfo.Id = int.Parse(Request["Id"]);      userInfo.UserName = Request["UserName"];      userInfo.Age = int.Parse(Request["Age"]);      if (service.UpdateUserInfo(userInfo) > 0)      {        return Redirect("Index");      }      else      {        return Content("修改失败");      }    }    #endregion  }}

  View层  Index.cshtml

@{  Layout = null;}@using IBatisDemo.Model<!DOCTYPE html><html><head>  <meta name="viewport" content="width=device-width" />  <title>Index</title></head><body>  <div>    <h1>IBatis 学习Demo</h1>    @if (ViewData["List"] != null)    {      <table id="tabs">        <tr><th>编号</th><th>姓名</th><th>年龄</th><th>详细</th><th>删除</th><th>修改</th></tr>        @foreach (var newInfo in (IList<UserInfo>)ViewData["List"])        {          <tr>            <td>@newInfo.Id</td>            <td>@newInfo.UserName</td>            <td>@newInfo.Age</td>            <td><a href="javascript:void(0)" ids="@newInfo.Id">详细</a></td>            <td><a href="http://www.cnblogs.com//home/delUserInfo?Id=@newInfo.Id" >删除</a></td>            <td><a href="http://www.cnblogs.com//home/getUserInfo?Id=@newInfo.Id" >修改</a></td>          </tr>        }      </table>    }    else    {      <span>暂无数据</span>    }    <a href="http://www.cnblogs.com//home/UserInsert">添加</a>  </div></body></html>

  编辑和添加的模板 直接在添加视图的时候生成就可以了,源码里面都有,这儿就不贴出来了

下面是运行效果:

IBatis.net在asp.net MVC下的使用IBatis.net在asp.net MVC下的使用IBatis.net在asp.net MVC下的使用





 




原标题:IBatis.net在asp.net MVC下的使用

关键词:ASP.NET

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

【卖断货攻略】抢先看:美国全品类30天爆量近2亿刀!:https://www.goluckyvip.com/news/20971.html
独立站新手教程引流篇:盘点TikTok常见的广告类型:https://www.goluckyvip.com/news/20972.html
千万播放、百万点赞!不起眼的“儿童卡丁车”在TikTok爆红:https://www.goluckyvip.com/news/20973.html
为什么说入驻亚马逊是2024年的明智之选?这是我见过最好的答案:https://www.goluckyvip.com/news/20974.html
千亿极兔押中的三次快递浪潮:https://www.goluckyvip.com/news/20975.html
DHL供应链瞄准东南亚扩张,五年内要投资3.5亿欧元!:https://www.goluckyvip.com/news/20976.html
83万单,Halara的TikTok美国小店爆单思路拆解:https://www.goluckyvip.com/news/186217.html
携程高铁旅游攻略,更优惠的高铁票价都在哪里:https://www.vstour.cn/a/362188.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流