phpMyBatis安全框架[dMapper],phpMVC框架,支持数据库单例模式和多例模式!!!【更新】

phpMyBatis安全框架[dMapper],phpMVC框架,支持数据库单例模式和多例模式【更新】 支持数据库单例模式和多例模式,sql文件写在xml中阅读性和维护性都很好,只需要将sql的xml文件交给DBA,DBA即可很轻松的维护,完全脱离了在php文件中写sql语句,数据库类采用了PDO技术,sql参数采用绑定的方式,有效了解决了sql注入的问题。 立即下载

dMapper下载地址1:https://pan.baidu.com/s/1gj95X-ndTsSnSFL8t7oevw


数据库文件

文件路径:mapper\test.xml

<?xml version="1.0" encoding="utf-8" ?>
<mapper>
	<fields>*</fields>
	<select id="test" attr="fetchAll">
		SELECT
		#fields#
		FROM
		test
	</select>
	<select id="test1" attr="fetch">
		SELECT
		#fields#
		FROM
		test
		WHERE
		id = :id
	</select>
	<select id="test2" attr="fetchColumn">
		SELECT
		id
		FROM
		test
		WHERE
		id = :id
	</select>


	<insert id="add">
		insert into test(`title`,`remarks`) #VALUES#
	</insert>
	<update id="upd">
		update test set `title`=:title,`remarks`=:remarks where id=:id
	</update>
	<delete id="del">
		delete
		from
		test
		where id=:id
	</delete>
</mapper>

控制器类

文件路径:app\www\controller\Test.php

<?php
/**
 * Created by lizhongwen.
 * User: pc
 * Date: 2018/5/15
 * Time: 23:39
 * qq:360811363
 */
namespace app\www\controller;

use core\base\Controller;
use core\db\Mapper;
use core\Lib;
use core\Request;

class Test extends Controller
{

    /**
     * 使用模型查询
     */
    public function index()
    {
        $ret = $this->model->getList();
        $this->assign('ret', $ret);
        $this->view();
    }

    /**
     * 删除
     *
     * @param number $id
     */
    public function delete($id = 0)
    {
        $ret = Mapper::orm('test')->map('delete')
            ->byId('del')
            ->exec([
            'id' => $id
        ]);
        if ($ret > 0) {
            header('location:' . Lib::roteUrl('test', 'index'));
        } else {
            echo "删除失败";
        }
    }

    /**
     * 添加一条数据
     *
     * @param string $act
     */
    public function add($act = '')
    {
        if ($act == 'do') {
            $data = [
                'title' => Request::post('title'),
                'remarks' => Request::post('remarks')
            ];
            try {
                $ret = Mapper::orm('test')->map('insert')
                    ->byId('add')
                    ->exec($data);
                header('location:' . Lib::roteUrl('test', 'index'));
            } catch (\Exception $e) {
                die($e->getMessage());
            }
        }
        $this->view();
    }

    /**
     * 添加多条数据
     *
     * @param string $act
     */
    public function adds($act = '')
    {
        if ($act == 'do') {
            
            try {
                $data = [
                    [
                        'title' => Request::post('title1'),
                        'remarks' => Request::post('remarks1')
                    ],
                    [
                        'title' => Request::post('title2'),
                        'remarks' => Request::post('remarks2')
                    ]
                ];
                $ret = Mapper::orm('test')->map('insert')
                    ->byId('add')
                    ->exec($data);
                header('location:' . Lib::roteUrl('test', 'index'));
            } catch (\Exception $e) {
                die($e->getMessage());
            }
        }
        $this->view();
    }
    /**
     * 修改数据
     * @param number $id
     * @param string $act
     */
    public function upd($id = 0, $act = '')
    {
        if ($act == 'do') {
            $data = [
                'title' => Request::post('title'),
                'remarks' => Request::post('remarks'),
                'id'=>$id
            ];
            try {
                $ret = Mapper::orm('test')->map('update')
                ->byId('upd')
                ->exec($data);
                header('location:' . Lib::roteUrl('test', 'index'));
            } catch (\Exception $e) {
                die($e->getMessage());
            }
        }
        // 修改前先查询数据
        $ret = Mapper::orm('test')->map('select')
            ->byId('test1')
            ->exec([
            'id' => $id
        ]);
        $this->assign('ret', $ret);
        $this->view();
    }
    /**
     * 事物处理
     */
    public function transaction()
    {
        try {
            //开启事物
            Mapper::beginTransaction();
            
            //数据库中title字段是唯一属性,我联系插入两条一样的数据,这时候就会触发事物,则自动回滚
            $data = [
                'title' => "一样的标题",
                'remarks' => "不一样的备注"
            ];
            
            //第一次执行
            $ret = Mapper::orm('test')->map('insert')
            ->byId('add')
            ->exec($data);
            //第二次执行,这时候就会回滚,数据库中一条也没有,你可以尝试不要执行下面的一条插入(记得换个标题),
            $ret = Mapper::orm('test')->map('insert')
            ->byId('add')
            ->exec($data);
            echo "执行成功";
            //提交事物
            Mapper::commit();
        }catch (\Exception $e){
            
            //echo $e->getMessage();
            echo "这里产生了事物回滚,原因:".$e->getMessage();
            //回滚事物
            Mapper::rollBack();
        }
    }
}

模型类

文件路径:app\www\model\Test.php

<?php
/**
 * Created by lizhongwen.
 * User: pc
 * Date: 2018/5/15
 * Time: 23:39
 * qq:360811363
 */
namespace app\www\model;

use core\db\Mapper;

class Test
{
    public function getList(){
        $ret = Mapper::orm('test')->map('select')->byId('test')->exec();
        return $ret;
    }
}


dMapper下载地址1:https://pan.baidu.com/s/1gj95X-ndTsSnSFL8t7oevw




【更新】phpMyBatis安全框架[dMapper],phpMVC框架,支持数据库单例模式和多例模式 支持数据库单例模式和多例模式,sql文件写在xml中阅读性和维护性都很好,只需要将sql的xml文件交给DBA,DBA即可很轻松的维护,完全脱离了在php文件中写sql语句,数据库类采用了PDO技术,sql参数采用绑定的方式,有效了解决了sql注入的问题。 立即下载

相关推荐

phpBatis组件

模仿java中mybatis而开发的一套php版batis

震惊!!PHP整合Mybatis终于有人做出来了

今天本来准备答辩睡不着,然后就去翻了下知网,我尼玛看到了惊天地泣鬼神的杰作,可谓是我一生中见过最屌的技术了,小弟才疏学浅也是学了点php和Java的,一直在寻找之间的联系。没想到在一个睡不着的晚上,看到大佬写出了这样的一个系统,让我为之震惊!这种对知识的渴望让我再也在夜晚睡不着觉,我由衷的想说大佬求求你带带我吧!然后我就点了进去:果然有这种技术,我本以为两种后端语言不怎么会产生联系 ,今天看到了艺术的交融!结语:好了懒得水了,马上要离开北大了,祝各位前程似锦,等下还得去赶飞机。

术不贱卖、道不轻传 331

dMapper开发框架 ,php精简MVC框架 php数据库路由,phpbatis

的支持sql配置,sql文件写在xml中阅读性和维护性都很好,只需要将sql的xml文件交给DBA即可,完全脱离了在php文件中写sql语句,数据库类采用了PDO技术,sql参数采用绑定的方式,有效了解决了sql注入的问题。

mysql高可用 持久层_MyBatis持久层框架使用总结 转载

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github,MyBatis的Github地址:https://github.com/mybatis/mybatis-3。iBATIS一词来源于“internet”和“abatis”...

weixin_39616880的博客 292

edp 千1.docx

edp 千1.docx

PHP从零开始打造自己的MVC框架之路由类实现方法分析

本文实例讲述了PHP从零开始打造自己的MVC框架之路由类实现方法。分享给大家供大家参考,具体如下: 在core目录下,新建一个名为lib的子目录,然后把我们前面写个route.php这个文件移动到这个目录下。 因为route类文件路径修改,所以在实例化的时候: new \core\lib\route(); 然后我们来完善route.php: <?php namespace core\lib; class Route { public $controller; // 控制器 public $action; // 方法(动作) public function __constru

php能不能用MyBatis,mybatis的简单使用

需要用到的包:(这里只是其中一个版本,其他的百度) mysql-connector-java-5.1.6-bin mybatis-3.2.2 先看项目目录: 配置文件mybatisconfig.xml: ?xml version=1.0 encoding=UTF-8?!DOCTYPE configurationPUBLIC -//mybatis.org//DTD Config 3.0//ENhtt...

weixin_34469152的博客 681

无源定位入门(二):FDOA(2)信号模型和原理

信号模型 假设地面固定目标信号源位置为 ,有M架飞机随机分布在空中,并作匀速直线运动。时刻t的时候第i架飞机的位置为,飞行速率为 , 假设目标的信号中心频率为 ,电磁波的传播速度为 ,则此时每个飞机接收目标信号的频率为 以第1架飞机为参考基站,目标信号到达第n架飞机和参考基站之间的FDOA 测量值可表示为 ...

syy_1797的博客 5956

php能不能用MyBatis,Mybatis与Ibatis的区别

Mybatis与Ibatis的区别:1、Mybatis实现了接口绑定,使用更加方便在ibatis2.x中我们需要在DAO的实现类中指定具体对应哪个xml映射文件,而Mybatis实现了DAO接口与xml映射文件的绑定,自动为我们生成接口的具体实现,使用起来变得更加省事和方便。这可以说是Mybatis最重要的改进。注意:虽然Mybatis支持在接口中直接使用annotation的配置方式来简化配置,...

weixin_36225248的博客 324

【物理模拟】PBD算法详解

参考MatthiaMuller的十分钟物理(他就是PBD算法的发明者)

beidou111的博客 9499

肖特基二极管的反向恢复过程

本博客简述肖特基二极管反向恢复过程。

记得诚 1万+

php能不能用MyBatis,java_MyBatis如何使用(一),mybatis作为ORM轻量级框架一出现 - phpStudy...

MyBatis如何使用(一)mybatis作为ORM轻量级框架一出现就吸引了无数人的眼球,比hibernate要简单且入门较容易,下面开始我的第一个mybatis程序。一、下载mybatis的包我们知道任何一个框架都会有其包,我们从其官方网站下载其包,官网网址为:http://www.mybatis.org/mybatis-3/,我这里使用的版本为3.3.0。下载完成之后解压可看到如下的目录结构:...

weixin_39927799的博客 252

【声呐技术】基于人工智能的拖曳阵声呐声学数据处理系统 SEA公司AI辅助拖曳阵系统

KraitSense是SEA公司开发的紧凑型被动拖曳阵声呐系统,核心传感器为KraitArray细线拖曳阵列。该系统专为小型舰艇、无人水面艇(USV)和无人潜航器(UUV)设计,通过人工智能与机器学习技术实现水下声学数据的自动化采集、处理与分类。系统与Mind Foundry公司开发的软件平台深度集成,形成端到端的智能反潜战(ASW)解决方案。

u012133341的博客 960

php mapper model dao,PHP 设计模式 - 结构型 - 数据映射模式(Data Mapper)

1. 模式定义数据映射:是持久化数据存储层(通常是关系型数据库)和驻于内存得数据表现层直接进行双向数据传输得数据访问层。数据映射模式的目的:让持久化数据存储层、驻于内存的数据表现层、以及数据映射本身三者相互独立、互不依赖。这个数据访问层由一个或多个映射器(或者数据访问对象)组成,用于实现数据传输。通用的数据访问层可以处理不同的实体类型,而专用的则处理一个或几个。2. 数据映射模式 ( Data ...

weixin_33585909的博客 371

【Flink on k8s】- 1 - Flink Kubernetes Operator 简介 2023

Flink Kubernetes Operator 可以与 Kubernetes 的其他功能和工具集成,可以帮助用户快速定位和解决问题。Flink Kubernetes Operator可以在Kubernetes上实现高可用性,以确保 Flink 集群的稳定性和可靠性。Flink Kubernetes Operator 可以快速地部署 Flink 集群,而无需手动配置和管理集群。Flink Kubernetes Operator可以将Flink集群与其他应用程序隔离,以避免资源争用和干扰。

欢迎来到我的博客,一起探索代码里的世界! 1348

CUDA-GDB(11)——调试示例演练

本博客包含三个CUDA-GDB的演练示例: ​​​​▶ Example: bitreverse ▶ Example: autostep ▶ Example: MPI CUDA Application

AI-安全-功耗 1514

mybatis与php,浅谈mybatis中的#和$的区别

浅谈mybatis中的#和$的区别发布于 2016-07-30 11:14:47 | 236 次阅读 | 评论: 0 | 来源: 网友投递MyBatis 基于Java的持久层框架MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。下面小编就为大家带来一篇浅...

weixin_35987446的博客 255

Vue3 + uniapp 踩坑:iOS 真机调试一直报错Maximum call stack size exceeded,和(in promise)MiniProgramError err的解决方法

不是你写错代码,是微信开发工具和 iOS 真机调试的兼容问题。开个空项目都报错,勾个设置就没问题,不是你,是工具的锅。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1267

十款PHP开发框架横向比较

下文转自:    http://plod.popoever.com/archives/001110.html这篇文章已经有些日子了,现在因为自己的开发需要想选一款容易上手的PHPFramework,所以重新找了出来,看完以后顺便翻译了一下,由于原文是写于今年三月底,故而其中的很多框架的现状也发生了较大的变化,本篇译文也只是方便大家阅读,对于正在寻找这方面资料的读者做个参考,也给

【昆山人在上海】 873

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

php mvc 路由,PHP手写MVC (五)—— 路由

路由是一个框架中必不可少的组件,其作用是把 URL 按照预定规则解析到特定控制器中。我们在这里定义了两种路由规则:查询字符串。在路径后面使用问号加参数,多个参数用 & 分隔。在配置文件使用 querystring 表示#控制器/方法?参数1=值1&参数2=值2http://domain/user/info?name=php&chapter=10路径,以路径的形式将参数和值添...

weixin_39928801的博客 420

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

php如何解决脏读,MyBatis为了解决二级缓存脏读问题,究竟做了那些骚操作!

MyBatis为了解决二级缓存脏读问题,究竟做了那些骚操作!一、存在即合理MyBatis为了提高我们的查询性能,专门设计了一级缓存和二级缓存,众所周知,我们在开发环境中,使用的缓存的时候,也会遇到各种各样的挑战,比如缓存穿透,缓存雪崩,数据脏读等等各种各样的问题,MyBatis也同样,在设计二级缓存的时候,MyBatis也同样遇见了各种挑战;我这几天在观看MyBatis对于二级缓存的设计的时候,突...

weixin_28913687的博客 277

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

mvc路由原理 php_php 搭建一个简单的MVC路由

提到PHP开发web,自然离不开开发框架,开发框架为我们提供了灵活的开发方式,MVC层分离,业务解耦等。。。第一篇先来简单点的,说说MVC框架的路由功能。。。一般的单入口框架路由都是这样的结构:domain/index.php/classname/functionname/var1/var2这里的index.php 就被称为入口文件。。。对于服务器而言,你这里访问的就只有index.php 后面调...

weixin_39778003的博客 227
八爪鱼123
博客等级 码龄18年 4粉丝 1原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值