如何使用Mybtis-Plus创建项目???

2023-10-30

1.建立项目

        file->New->Project

         选择Maven项目

 

 

2.导入依赖

        编写pom.xml文件

 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.4.RELEASE</version>
        <relativePath/>    
</parent>


<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.3</version>
        </dependency>
        <!--web开发依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

        <!--分页依赖-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.12</version>
        </dependency>
        <!--数据库驱动依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.23</version>
        </dependency>
        <!--阿里巴巴连接池依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.21</version>
        </dependency>
        <!--测试框架依赖-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <!--Springboot测试框架依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>
        <!--JWT依赖-->
        <dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>3.13.0</version>
        </dependency>

3.书写配置文件,连接数据库

        编写application.yml

spring:
  datasource:
    driverClassName: com.mysql.cj.jdbc.Driver
    #    3306为数据库端口号,demo4为数据库表名
    url: jdbc:mysql://localhost:3306/demo4?characterEncoding=utf-8
    username: root  #数据库用户名
    password: 123456  #数据库密码
    type: com.alibaba.druid.pool.DruidDataSource
    maxActive: 50
    maxWait: 2000
    minIdle: 10

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  type-aliases-package: com.project.bean #对应项目结构


mybatis:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  type-aliases-package: com.project.bean #对应项目结构

        数据库设计

 

4.构建项目

        建立包com.project,在此包下建立bean、dao、service包,分别建立用户实体bean,持久层,业务层等,以及在resources目录下下创建映射文件 持久层名.xml

        创建结束后的结构

 

4.1.各个包下的实现代码块(按自己数据库设计需求来编写,此处为本人数据库实列)

        bean包下用户实体类UserBean:

package com.project.bean;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

@TableName("t_user")//当前实体对应的数据库表名称
public class UserBean {
    //@TableId注解,指定属性对应主键的列
    //type = IdType.AUTO使用数据库表主键自动高增长策略
    @TableId(value = "pk_userid",type = IdType.AUTO)
    private int userid;
    //@TableField普通属性,书写属性对应的数据表的列
    @TableField("f_username")
    private String username;
    @TableField("f_password")
    private String password;

    public UserBean() {
    }

    public UserBean(String username, String password) {
        this.username = username;
        this.password = password;
    }

    public int getUserid() {
        return userid;
    }

    public void setUserid(int userid) {
        this.userid = userid;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "UserBean{" +
                "userid=" + userid +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

        dao层(持久层)UserDao类:

package com.project.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.project.bean.UserBean;
import org.springframework.stereotype.Repository;


/**
 * 持久接口
 * 1.需要继承BaseMapper接口
 * 2.在接口里书写对应的实体类类名
 * 3.加上注解@Repository,表示该接口为持久层组件
 */
@Repository
public interface UserDao extends BaseMapper<UserBean> {
    //此时持久接口中,已经包含基本单表的增删查改的实现
/**
     * 根据用户姓名、生日查询用户信息
     * @param name
     * @param start
     * @param end
     * @return
     */
    List<UserBean> findByItem(@Param("name")String name,
                              @Param("start")LocalDate start,
                              @Param("end") LocalDate end);


    /**
     * 根据姓名分页查询
     * @param page
     * @param name
     * @return
     */
    IPage<UserBean> pageByItem(Page<UserBean> page,
                               @Param("name")String name);



}

        

        service层(业务层)UserService类:

        

package com.project.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.project.bean.UserBean;

import java.time.LocalDate;
import java.util.List;


/**
 * 自定义业务层接口
 * 1.需要继承IService
 * 注意:通用service接口和通用mapper接口不一样,
 * 通用mapper接口不需要提供实现类,就已经包含所有数据的数据库操作方法
 * 通用service接口必须要提供实现类
 */
public interface UserService extends IService<UserBean> {


    /**
     * 根据用户姓名、生日查询用户信息
     * @param name
     * @param start
     * @param end
     * @return
     */
    List<UserBean> findByItem(String name, LocalDate start, LocalDate end);


    /**
     * 根据姓名分页查询
     * @param pageNo
     * @param pageSize
     * @param name
     * @return
     */
    IPage<UserBean> pageByItem(int pageNo,int pageSize,String name);
}

        service层(业务层)下impl包UserServiceImpl类:

package com.project.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.project.bean.UserBean;
import com.project.dao.UserDao;
import com.project.service.UserService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;


/**
 * 自定义接口实现类
 * 继承ServiceImpl
 * 注意:实现类必须继承mybatis-plus提供的ServiceImpl实现类,
 * 并加入泛型<持久层接口,实体bean>
 */

@Service
@Transactional
public class UserServiceImpl extends ServiceImpl<UserDao, UserBean> implements UserService {


    /**
     * 根据用户姓名、生日查询用户信息
     * @param name
     * @param start
     * @param end
     * @return
     */
    @Override
    public List<UserBean> findByItem(String name, LocalDate start, LocalDate end) {
//        //方案1,不写xml
        QueryWrapper<UserBean> wrapper = new QueryWrapper();
        if (name!=null&&!name.equals("")){
            wrapper.like("f_userName",name);
        }if (start!=null){
            wrapper.ge("userDate",start);
        }if (end!=null){
            wrapper.le("userDate",end);
        }
        List<UserBean> list = this.list(wrapper);
        return list;

        //方案2 书写持久层接口和xml文件
        //通过this.baseMapper
        List<UserBean> list = this.baseMapper.findByItem(name, start, end);
        return list;
    }

    /**
     * 根据姓名分页查询
     * @param pageNo
     * @param pageSize
     * @param name
     * @return
     */
    @Override
    public IPage<UserBean> pageByItem(int pageNo, int pageSize, String name) {
//        Page<UserBean> page = new Page<>(pageNo,pageSize);
//        QueryWrapper wrapper = new QueryWrapper();
//        if (name!=null&&!name.equals("")){
//            wrapper.like("f_userName",name);
//        }
//
//        IPage<UserBean> p = this.page(page,wrapper);
//        return p;
    }
}

4.2.在test/java目录下新建TestUserDao测试类,测试持久层代码

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.project.MainServer;
import com.project.bean.UserBean;
import com.project.dao.UserDao;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import javax.annotation.Resource;
import java.time.LocalDate;
import java.util.List;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = MainServer.class)

public class TestUserDao {

    @Resource
    private UserDao userDao;

    @Test
    public void test(){
        //添加用户
        UserBean userBean = new UserBean("孙悟空", LocalDate.parse("1299-09-24"),"男","123456","用户");
        userDao.insert(userBean);
        //根据id查询用户信息
        userDao.selectById(2);
        //根据用户姓名和用户密码查询用户
        QueryWrapper<UserBean> wrapper = new QueryWrapper<>();
        wrapper.eq("f_userName","周公");
        wrapper.eq("f_userPwd","123");
        List<UserBean> list = userDao.selectList(wrapper);
        for (UserBean i:list){
            System.out.println(i);
        }
        //根据用户id修改用户
//        UserBean userBean2 = new UserBean();
        userBean2.setUserId(3);
        userBean2.setUserName("周瑜好帅哦");
        userBean2.setUserPwd("666");
        userDao.updateById(userBean2);
        //根据用户的姓名修改用户
        userBean2.setUserType("游客");
        userDao.update(userBean2,wrapper.eq("f_userName","孙悟空"));
        //根据用户id删除用户
        userDao.deleteById(4);
        //根据用户身份删除用户
        userDao.delete(wrapper.eq("f_userType","游客"));
        //查询所有用户集合
        List<UserBean> list = userDao.selectList(null);
        for (UserBean i:list){
            System.out.println(i);
        }
        //根据姓名和性别查询用户集合
        wrapper.eq("f_userName","李逵");
        wrapper.eq("f_userGender","男");
        List<UserBean> list = userDao.selectList(wrapper);
        for (UserBean i:list){
            System.out.println(i);
        }



        //分页
        Page<UserBean> page = new Page<>(1,3);
        wrapper.like("f_userName","好");
        wrapper.eq("f_userGender","男");
        wrapper.eq("f_userType","用户");
        IPage<UserBean> p = userDao.selectPage(page,wrapper);
        //获取总记录数
        long total = p.getTotal();
        System.out.println(total);
        //当前页码
       long num = p.getCurrent();
        System.out.println(num);
        //获取当前页数据
        List<UserBean> list =  p.getRecords();
        System.out.println(list);
        for (UserBean i:list){
            System.out.println(i);
        }


        //模糊查询,以生日范围查询用户信息
        //比较范围用ge()--大于等于和le()--小于等于
         //        gt()--大于和lt()--小于
        wrapper.gt("f_userDate","2022-09-01");//大于
        wrapper.lt("f_userDate","2022-09-15");
        List<UserBean> list = userDao.selectList(wrapper);
        for (UserBean i:list){
            System.out.println(i);
//        }


    }
}

5.编写MainServer准备测试

package com.project;


import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.project.dao")
public class MainServer {
    public static void main(String[] args) {
        SpringApplication.run(MainServer.class,args);
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用Mybtis-Plus创建项目??? 的相关文章

  • Java new Date() 打印

    刚刚学习 Java 我知道这可能听起来很愚蠢 但我不得不问 System out print new Date 我知道参数中的任何内容都会转换为字符串 最终值是 new Date 返回对 Date 对象的引用 那么它是如何打印这个的呢 Mo
  • Java EE:如何获取我的应用程序的 URL?

    在 Java EE 中 如何动态检索应用程序的完整 URL 例如 如果 URL 是 localhost 8080 myapplication 我想要一个可以简单地将其作为字符串或其他形式返回给我的方法 我正在运行 GlassFish 作为应
  • Play框架运行应用程序问题

    每当我尝试运行使用以下命令创建的新 Web 应用程序时 我都会收到以下错误Play http www playframework org Error occurred during initialization of VM Could no
  • Spark 1.3.1 上的 Apache Phoenix(4.3.1 和 4.4.0-HBase-0.98)ClassNotFoundException

    我正在尝试通过 Spark 连接到 Phoenix 并且在通过 JDBC 驱动程序打开连接时不断收到以下异常 为简洁起见 下面是完整的堆栈跟踪 Caused by java lang ClassNotFoundException org a
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • Spring Data JPA 应用排序、分页以及 where 子句

    我目前正在使用 Spring JPA 并利用此处所述的排序和分页 如何通过Spring data JPA通过排序和可分页查询数据 https stackoverflow com questions 10527124 how to query
  • Spring @RequestMapping 带有可选参数

    我的控制器在请求映射中存在可选参数的问题 请查看下面的控制器 GetMapping produces MediaType APPLICATION JSON VALUE public ResponseEntity
  • 如何将 pfx 文件转换为 jks,然后通过使用 wsdl 生成的类来使用它来签署传出的肥皂请求

    我正在寻找一个代码示例 该示例演示如何使用 PFX 证书通过 SSL 访问安全 Web 服务 我有证书及其密码 我首先使用下面提到的命令创建一个 KeyStore 实例 keytool importkeystore destkeystore
  • JRE 系统库 [WebSphere v6.1 JRE](未绑定)

    将项目导入 Eclipse 后 我的构建路径中出现以下错误 JRE System Library WebSphere v6 1 JRE unbound 谁知道怎么修它 右键单击项目 特性 gt Java 构建路径 gt 图书馆 gt JRE
  • getResourceAsStream() 可以找到 jar 文件之外的文件吗?

    我正在开发一个应用程序 该应用程序使用一个加载配置文件的库 InputStream in getClass getResourceAsStream resource 然后我的应用程序打包在一个 jar文件 如果resource是在里面 ja
  • 如何在控制器、服务和存储库模式中使用 DTO

    我正在遵循控制器 服务和存储库模式 我只是想知道 DTO 在哪里出现 控制器应该只接收 DTO 吗 我的理解是您不希望外界了解底层域模型 从领域模型到 DTO 的转换应该发生在控制器层还是服务层 在今天使用 Spring MVC 和交互式
  • AWS 无法从 START_OBJECT 中反序列化 java.lang.String 实例

    我创建了一个 Lambda 函数 我想在 API 网关的帮助下通过 URL 访问它 我已经把一切都设置好了 我还创建了一个application jsonAPI Gateway 中的正文映射模板如下所示 input input params
  • Google App Engine 如何预编译 Java?

    App Engine 对应用程序的 Java 字节码使用 预编译 过程 以增强应用程序在 Java 运行时环境中的性能 预编译代码的功能与原始字节码相同 有没有详细的信息这是做什么的 我在一个中找到了这个谷歌群组消息 http groups
  • 如何从泛型类调用静态方法?

    我有一个包含静态创建方法的类 public class TestClass public static
  • 如何在桌面浏览器上使用 webdriver 移动网络

    我正在使用 selenium webdriver 进行 AUT 被测应用程序 的功能测试自动化 AUT 是响应式网络 我几乎完成了桌面浏览器的不同测试用例 现在 相同的测试用例也适用于移动浏览器 因为可以从移动浏览器访问 AUT 由于它是响
  • 玩!框架:运行“h2-browser”可以运行,但网页不可用

    当我运行命令时activator h2 browser它会使用以下 url 打开浏览器 192 168 1 17 8082 但我得到 使用 Chrome 此网页无法使用 奇怪的是它以前确实有效 从那时起我唯一改变的是JAVA OPTS以启用
  • simpleframework,将空元素反序列化为空字符串而不是 null

    我使用简单框架 http simple sourceforge net http simple sourceforge net 在一个项目中满足我的序列化 反序列化需求 但在处理空 空字符串值时它不能按预期工作 好吧 至少不是我所期望的 如
  • 使用 JMF 创建 RTP 流时出现问题

    我正处于一个项目的早期阶段 需要使用 RTP 广播DataStream创建自MediaLocation 我正在遵循一些示例代码 该代码目前在rptManager initalize localAddress 出现错误 无法打开本地数据端口
  • JGit 检查分支是否已签出

    我正在使用 JGit 开发一个项目 我设法删除了一个分支 但我还想检查该分支是否已签出 我发现了一个变量CheckoutCommand但它是私有的 private boolean isCheckoutIndex return startCo
  • 将 List 转换为 JSON

    Hi guys 有人可以帮助我 如何将我的 HQL 查询结果转换为带有对象列表的 JSON 并通过休息服务获取它 这是我的服务方法 它返回查询结果列表 Override public List

随机推荐

  • Elementui设置样式不起效

    在使用ElementUI时 其渲染的dom元素有时是在模板外的 虽然代码写在了vue文件对用的模板内 但elementui在渲染的时候可能会渲染到和body一级 如这种弹窗 有时候想给这种el dialog加个样式 发现是不起效的 原因是
  • VCS命令行CTRL+C后dump完整的fsdb波形

    UCLI命令行CTRL C后dump完整的fsdb波形 1 ucli fsdbDumpFinish 2 ucli fsdbDumpvars 0 harness mda struct 如果仿真过程中直接CTRL C会调到UCLI接口 此时如果
  • 工作不好找,普通打工人如何破局

    大家好 我是苍何 我的一位阿里朋友被裁后 找工作找了一个月都没结果 很多到最后一面被pass了 不由得做一下感慨 即使是大厂背景又如何 面对经济环境和大环境市场 每个人都不容易 我身边很多都是程序员群体 最近也在在编程导航 收到了很多小伙伴
  • 13.linux进程基础

    一 进程基础 基础概念 关于进程和线程的基本概念在操作系统中早已学过 可以概括为一下几点 根本区别 进程是操作系统资源分配的基本单位 而线程是处理器任务调度和执行的基本单位 资源开销 每个进程都有独立的代码和数据空间 程序上下文 程序之间的
  • Unable to negotiate with 172.16.28.137 port 22: no matching host key type found. Their offer: ssh-rs

    Unable to negotiate with 172 16 28 137 port 22 no matching host key type found Their offer ssh rsa ssh dss ssh连接服务器报错 Un
  • 数字化转型升级是企业的一项重要决策

    无独有偶 世界经济数字化转型是一个大命题 也是一个大趋势 未来一段时期 数字经济将成为拉动经济增长的一个重要引擎 各行业各领域数字化转型步伐将大大加快 不论是行业老大 还是国家政策 数字化转型都纷纷提上了日程 看来 在2020年 进行数字化
  • 贪吃蛇的小程序

    1 创建项目 1 打开微信开发者工具如图所示的界面 点击 2 填写项目以后 点击确定即可 如图所示 2 编程 1 编写index wxml的代码如下
  • ITIL是什么意思?ITIL是什么?

    ITIL是什么 ITIL是Information Technology Infrastructure Library的缩写 即 信息技术基础架构库 ITIL是由英国政府部门CCTA Central Computing and Telecom
  • 解决 hsdb jinfo jmap sa-jdi等mac不可用问题

    mac 使用 hsdb 调试的时候报错 hsdb gt attach 3196 Attaching to process 3196 please wait ERROR attach task for pid 3196 failed os k
  • linux查看文件行数

    这本阿里P8撰写的算法笔记 再次推荐给大家 身边不少朋友学完这本书最后加入大厂 Github 疯传 史上最强悍 阿里大佬 LeetCode刷题手册 开放下载了 使用wc命令 具体通过wc help 可以查看 如 wc l filename
  • 论文笔记:nnU-Net: a self-configuring method for deep learning-based biomedical image segmentation

    nature 2019 配套论文笔记 nnU Net Self adapting Frameworkfor U Net Based Medical Image Segmentation UQI LIUWJ的博客 CSDN博客 1 abstr
  • flutter windows 配置

    按照官网的教程安装好Android Studio flutter3 3 7 添加flutter目录的bin到环境变量Path 特别要注意的是 要添加以下两个环境变量 否则在运行flutter run 编译android程序时 会非常慢 Ru
  • 【python基础知识】19.产品思维以及流程图的使用 - 思维篇

    文章目录 前言 产品思维 流程图 顺序结构 条件结构 循环结构 产品设计 如何提需求 如何设计解决方案 前言 这是一节思维课程 我会向大家讲述如何利用编程知识去解决实际生活的问题 我曾反复提到 我们学习编程的目的从来不是为了考试 而是要学会
  • ESP32+TFTLCD实现WiFi天气语音播报(六)

    ESP32 MY1680U实现语音播报 文章目录 ESP32 MY1680U实现语音播报 前言 一 MY1680U 12P 语音模块 1 概述 2 参数说明 二 代码实现 1 MY1690 c 2 MY1690 h 3 main c 总结
  • 鸿蒙系统开发工具DevEco Studio 2.2下载/安装教程

    鸿蒙开发包括鸿蒙应用开发 手机app 和鸿蒙设备开发 硬件开发 两大部分 其中设备开发又包括TV 音响 眼镜 手表 PC 平板 汽车 耳机以及未来的各种智能家居 手机作为一个超级终端 与各种设备实现互联 未来无论是在工作 学习 运动还是做家
  • Ubuntu卸载Anaconda步骤

    1 进行相关文件的删除 删除12个文件夹 删除anaconda3文件夹 rm rf anaconda3 删除 anaconda文件夹 rm rf anaconda 删除 condarc文件夹 rm rf condarc 删除 conda文件
  • QT项目移植Ubuntu碰到的问题及解决

    项目可以直接移植 移植过程中需要删除两个文件 意思就是除了项目相关的文件 其他的编译文件不要移植过去 我的项目似乎是这几个文件的问题 要是不删除上面多余文件的话 我的项目是直接从windows复制到装载ubuntu的虚拟机上 不删的话 在w
  • Ubuntu 20.04 搭建 Fisco-BCOS 2.8.0 区块链系统

    0 摘要 本文根据 Fisco BCOS 及 Webase 官方文档 就安装过程做了详细描述 针对官方文档中一些不清楚的地方 做了补充 方便新手搭建 1 准备工作 1 1 系统 Ubuntu 20 04 3 Desktop Server F
  • TOOLLLM: FACILITATING LARGE LANGUAGE MODELS TO MASTER 16000+ REAL-WORLD APIS

    本文是LLM系列的文章之一 针对 TOOLLLM FACILITATING LARGE LANGUAGE MODELS TO MASTER 16000 REAL WORLD APIS 的翻译 TOOLLLMs 让大模型掌握16000 的真实
  • 如何使用Mybtis-Plus创建项目???

    1 建立项目 file gt New gt Project 选择Maven项目 2 导入依赖 编写pom xml文件