springboot+mybatis学习笔记(代码片段)

Panda_cv Panda_cv     2022-12-19     445

关键词:

目录结构

1. controller层: 控制层–>调用业务层方法来控制业务逻辑

__
Controller,从字面上理解是控制器,所以它是负责业务调度的,所以在这一层应写一些业务的调度代码,而具体的业务处理应放在service中去写。实际是等待获取网页请求,调用服务层service。__

@RequestMapping("/user")
public class UserController 
    @Autowired
    private UserService userService;
    @PostMapping("/addUser")
    public JsonResponse addUser(@RequestBody User user)
        int result = userService.addUser(user);
        if ( result == 1)
            return JsonResponse.success(user);
        else 
            return JsonResponse.errorMsg(-1,"插入失败,请重新插入");
        
    

2. service层

service不单纯是对于dao的增删改查的调用,service是业务层,所以应该更切近于具体业务功能要求,所以在这一层,一个方法所体现的是一个可以对外提供的功能,比如购物商城中的生成订单方法,这里面就不简单是增加个订单记录那么简单,我们需要查询库存,核对商品等一系列实际业务逻辑的处理;

package com.cdut.managesystem.background.service;

import com.cdut.managesystem.background.dao.UserDao;
import com.cdut.managesystem.background.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService 

    @Autowired
    private UserDao userDao;

    public int addUser(User user)
        user.setUserId(UUID.randomUUID().toString());
        user.setCreateTime(DateAndTime.getNowTime());
        int exist =  userDao.addUser(user);
        if (exist > 0)
            return 1;
        else 
            return 0;
        
    

    public List<User> findAllUser()
        List<User> users = userDao.findAllUser();
        return users;
    

    public User findUser(User user)
        return userDao.findUser(user);
    


** 在具体的实现类加入@Service @Autowired 没有new对象了 **

3. dao层: 持久层,主要与数据库交互

Dao层首先会创建Dao接口,接着就可以在配置文件中定义该接口的实现类;然后就可以在模块中调用Dao的接口进行数据业务的处理,而不用关注此接口的具体实现类是哪一个类,Dao层的数据源和数据库连接的参数都是在配置文件中进行配置的。

package com.cdut.managesystem.background.dao;

import com.cdut.managesystem.background.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

import java.util.List;

@Mapper
@Repository
public interface UserDao 
    /**
     *
     * @param user
     * @return 影响的行数
     */
    int addUser(User user);
    
    List<User> findAllUser();

    User findUser(User user);


4. entity层: 实体层–>数据库在项目中的类

主要用于定义与数据库对象应的属性,提供get/set方法,tostring方法,有参无参构造函数。

package com.cdut.managesystem.background.entity;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

@Getter
@Setter
@ToString
public class User 

    private String userId;
    private String userName;
    private String password;
    private String createTime;

5. resources下的mapper.userMap

resources\\mapper.userMap\\user.xml

<mapper namespace="com.cdut.managesystem.background.dao.UserDao">
    <sql id="userTable">user</sql>
    <insert id="addUser">
        INSERT INTO
        <include refid="userTable"></include>
        VALUES (#userId,#userName,#password,#createTime)
    </insert>

    <select id="findAllUser" resultType="User">
        SELECT
            user_id AS userId,
            user_name AS userName,
            password AS password,
            create_time AS createTime
        FROM 
        <include refid="userTable"></include>
    </select>

    <select id="findUser" resultType="User">
        SELECT
                user_id AS userId,
                user_name AS userName,
                password AS password
        FROM
             <include refid="userTable"></include>
        WHERE
               user_name = #userName
        AND
               password = #password
    </select>
</mapper>

连接数据库

resources\\applications.properties

##  数据源配置
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.data-username=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/manage_system?characterEncoding=UTF-8&serverTimezone=GMT%2b8
spring.datasource.username=root
spring.datasource.password=520myself1996

#配置服务端口
server.port=8082

6. controller层 和service层 注解@


7. @Component 与 @Service 区别

@Service 业务逻辑中服务层,跟需求有关。
@Component 组件,在很多地方调用,通用性比较强,可以是工具类,可能在控制器或者服务层调用, 跟需求没啥大关系。

8. @Autowired 与 @Resource 区别

UserService是基本的用户,然后定义两个实现类 AdminServiceImpl(超级管理员),
在UserActionController定义UserService接口,并不知道是哪个实现。这个时候我希望调用的是AdminServiceImpl,则因修改成@Resource(name = “adminServiceImpl”)

如果想要实现两类则需要加入2个@Resource( … ) 可以自动找到2个实现类。

9. @Qualifier

springboot学习笔记-整合mybatis

Springboot学习笔记(二)- 整合MyBatis SpringBoot中整合MyBatis,并通过注解方式实现映射。整合MyBatis以Springboot学习笔记(一)-Helloworld 为基础项目,在pom.xml中添加如下依赖 <dependency>  <groupId>org.mybatis.spring.b... 查看详情

mybatis-plus学习笔记(代码片段)

目录1.Mybatis-Plus简介1.1Mybatis-Plus介绍1.2代码以及文档1.3特性1.4框架结构1.5作者2.快速入门2.0准备工作2.1Mybatis整合Mybatis-Plus2.1.1原生Mybatis查询2.1.2使用Mybatis-Plus查询2.2Spring&Mybatis整合Mybatis-Plus2.3SpringBoot、Mybatis整合Mybatis 查看详情

springboot学习笔记--[springboot集成阿里druid数据源,整合mybatis搭建一个案例试试](代码片段)

文章目录1.springboot整合阿里数据源2.springboot整合Mybatis3.试试案例测试1.springboot整合阿里数据源首先在pom.xml文件中导入依赖坐标<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.10</versio... 查看详情

mybatisplus学习笔记(代码片段)

...结构快速使用引入mybatis-plus相关maven依赖引入mybatis-plus在springboot中的场景启动器项目中其他需要导入依赖创建表SQL语句项目结构一览项目配置配置MapperScan注解application.properties配置创建Entity(Pojo)实体创建接口普通的CRUD操作注解#[&... 查看详情

mybatis学习笔记11:解决字段名和属性的映射关系(代码片段)

解决字段名和属性的映射关系【Mybatis】学习笔记01:连接数据库,实现增删改【Mybatis】学习笔记02:实现简单的查【MyBatis】学习笔记03:配置文件进一步解读(非常重要)【MyBatis】学习笔记04:配置文件模板【MyBatis】学习笔记05... 查看详情

mybatis框架学习笔记(代码片段)

本篇Mybatis框架学习笔记;紧跟之前的学习Mybatis框架学习笔记(2)—>在mybatis框架核心配置文件中需要学习的配置configuration(配置)properties(属性)settings(设置)typeAliases(类型别名)typeHandlers 查看详情

springboot学习笔记——thymeleaf(代码片段)

前置知识:SpringBoot学习笔记——SpringBoot简介与HelloWordSpringBoot学习笔记——源码初步解析SpringBoot学习笔记——配置文件yaml学习SpringBoot学习笔记——JSR303数据校验与多环境切换SpringBoot学习笔记——自动配置原理SpringBoot学习笔记... 查看详情

mybatis框架学习笔记(代码片段)

本篇Mybatis框架学习笔记;紧跟之前的学习Mybatis框架学习笔记(1)—>小智RE0在mybatis框架核心配置文件中需要学习的配置configuration(配置)properties(属性)settings(设置)typeAliases(类型别名)typeHandl... 查看详情

mybatis学习笔记(代码片段)

Mybatis学习笔记本篇文章是观看B站UP主狂神说关于Mybatis讲解的视频,借鉴Mybatis官方文档以及CSDN博主黑心白莲相关文章整理的个人Mybatis笔记。因笔者能力有限,文章难免有错误之处,欢迎各位评论勘误,共同探讨&#... 查看详情

学习笔记mybatis学习笔记(代码片段)

本文是动力节点MyBatis教程的学习笔记。第一章1.三层架构(1)三层的功能表示层(UserInterfaceLayer):接受用户数据,显示请求的处理结果,包括jsp、html、servlet等。对应controller包;业务逻辑层(BusinessLogic... 查看详情

学习笔记mybatis学习笔记(代码片段)

本文是动力节点MyBatis教程的学习笔记。第一章1.三层架构(1)三层的功能表示层(UserInterfaceLayer):接受用户数据,显示请求的处理结果,包括jsp、html、servlet等。对应controller包;业务逻辑层(BusinessLogic... 查看详情

mybatis学习笔记-01(代码片段)

mybatis学习笔记-01认识mybatis安装mybatis准备工作我的第一个mybatis程序工具类MybatisUtil类(工具类)mybatis-config.xml(对应配置文件)实体类Dao层Dao接口UserMappr.xml测试UserMapprTest测试结果开启自学mybatis的时光。认识mybatis... 查看详情

mybatis学习笔记-01(代码片段)

mybatis学习笔记-01认识mybatis安装mybatis准备工作我的第一个mybatis程序工具类MybatisUtil类(工具类)mybatis-config.xml(对应配置文件)实体类Dao层Dao接口UserMappr.xml测试UserMapprTest测试结果开启自学mybatis的时光。认识mybatis... 查看详情

springboot学习笔记——web开发探究(代码片段)

前置知识:SpringBoot学习笔记——SpringBoot简介与HelloWordSpringBoot学习笔记——源码初步解析SpringBoot学习笔记——配置文件yaml学习SpringBoot学习笔记——JSR303数据校验与多环境切换SpringBoot学习笔记——自动配置原理Web开发探究简介... 查看详情

springboot学习笔记——自动配置原理(代码片段)

前置知识:SpringBoot学习笔记——SpringBoot简介与HelloWordSpringBoot学习笔记——源码初步解析SpringBoot学习笔记——配置文件yaml学习SpringBoot学习笔记——JSR303数据校验与多环境切换自动配置原理配置文件到底能写什么?怎么写?Spring... 查看详情

mybatis框架学习笔记(代码片段)

官方中文文档–>https://mybatis.org/mybatis-3/zh/getting-started.html或点击–>mybatis文档mybatis3版本的源码–>https://github.com/mybatis/mybatis-3/releases或点击–>mybatis3源码文章目录1.什么是mybatis2.基础搭建使用(1)添加相关maven依赖 查看详情

mybatis学习笔记(代码片段)

一、Mybatis简介1、MyBatis历史MyBatis最初是Apache的一个开源项目iBatis,2010年6月这个项目由ApacheSoftwareFoundation迁移到了GoogleCode。随着开发团队转投GoogleCode旗下,iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到GithubiBatis一词来源于... 查看详情

mybatis框架学习笔记(代码片段)

本篇Mybatis框架学习笔记;紧跟之前的学习Mybatis框架学习笔记(3)–>文章目录1.当出现数据库的列字段与实体类的不一致时;需要手动配置字段映射;2.两张表以上的多表映射;完成查询所有的员工(附带地查到员工对应的部门);注意有... 查看详情