controller调用controller的方法_调用数据库的五种方式

这篇博客详细介绍了ThinkPHP中调用数据库的五种方法,包括全局配置定义、PDO专用定义、直接在控制器写入、使用对应数据表的模型定义以及D()方法。同时,文章提到了模型类与数据表的命名规范、字段定义及缓存,以及如何跨模块调用模型和使用原生SQL语句。
摘要由CSDN通过智能技术生成

ThinkPHP 内置了抽象数据库访问层,把不同的数据库操作封装起来。我们只需要使用
公共的 Db 类进行操作,无须针对不同的数据库写不同的代码和底层实现。Db 类会自动调用
相应的数据库驱动来处理。

一、全局配置定义  

 common/conf/config.php 

aaec1dc1d23b7383e48b574daf954917.png

'DB_TYPE'=>'mysql', //数据库类型
'DB_HOST'=>'localhost', //服务器地址
'DB_NAME'=>'thinkphp', //数据库名
'DB_USER'=>'root', //用户名
'DB_PWD'=>'123456', //密码
'DB_PORT'=>3306, //端口
'DB_PREFIX'=>'think_', //数据库表前缀,因为建立的数据表名称为think_user

aaec1dc1d23b7383e48b574daf954917.png

在 Home/Controller/UserController.calss.php 中

aaec1dc1d23b7383e48b574daf954917.png

phpnamespace Home\Controller;use Think\Controller;use Think\Model;//加载数据库模块class UserController extends Controller {
    public function model() {
    $user = new Model('User');//User最好大写         var_dump($user->select()); //select是选择数据表中的数据  } }

aaec1dc1d23b7383e48b574daf954917.png

二、PDO专用定义

  common/conf/config.php  

    'DB_TYPE'=>'pdo',
'DB_USER'=>'root',
'DB_PWD'=>'123456',
'DB_PREFIX'=>'think_',
'DB_DSN'=>'mysql:host=localhost;dbname=thinkphp;charset=UTF8',

在 Home/Controller/UserController.calss.php 不变

三、直接在 Home/Controller/UserController.calss.php 写,不需要在  common/conf/config.php  插入任何代码

在ruoyi框架中,一个Controller中的方法可以通过调用一个Controller中的方法来实现代码复用。具体实现方式如下: 1. 首先,在需要被调用Controller中定义一个公共方法,比如: ```java @Controller @RequestMapping("/dept") public class SysDeptController extends BaseController { @Autowired private ISysDeptService deptService; @RequestMapping(value = "/list", method = RequestMethod.GET) public String list(ModelMap modelMap) { // ...省略部分代码... } // 公共方法,供其他Controller调用 public List<SysDept> getDeptList() { return deptService.selectDeptList(new SysDept()); } } ``` 在上面的代码中,定义了一个名为 "getDeptList" 的公共方法,可以供其他Controller调用。 2. 然后,在调用方法Controller中,通过@Autowired注解将需要调用Controller注入到当前Controller中,比如: ```java @Controller @RequestMapping("/user") public class SysUserController extends BaseController { @Autowired private SysDeptController deptController; @RequestMapping(value = "/list", method = RequestMethod.GET) public String list(ModelMap modelMap) { List<SysDept> deptList = deptController.getDeptList(); // ...省略部分代码... } } ``` 在上面的代码中,通过@Autowired注解将SysDeptController注入到当前SysUserController中,然后在 "list" 方法调用 "getDeptList" 方法获取部门列表,实现了代码复用。 需要注意的是,在调用其他Controller中的方法时,需要通过注入的Controller对象调用方法,而不能直接调用。同时,被调用方法需要设置为公共方法,以便其他Controller可以访问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值