首页 > 其他分享 >2023年3月29日晚

2023年3月29日晚

时间:2023-03-29 23:17:14浏览次数:38  
标签:Spring dao 29 接口 Bean 2023 日晚 方法 注解

ssm框架到底如何运作

  • model dto dao service controller
  • User:userdao和userpo的区别
  • assistant: UserDao和UserPo分别是数据访问层和持久化对象,它们的作用和职责不同:
      UserDao通常是一个接口类,用于定义对User数据进行持久化操作的接口方法。在Mybatis或其他ORM框架中,通常会通过注解或XML配置文件将接口中的方法映射到具体的SQL语句,从而实现对数据库的访问。
      UserPo通常是一个普通的Java类,用于定义User数据在系统中的领域模型或持久化的数据结构。UserPo通常与数据库中的表结构一一对应,包含了表中的字段信息,同时还可能包含一些与业务无关的元数据信息(如create_time、last_update_time等)。在进行数据持久化操作时,需要将UserPo实例转换成数据库中对应的表结构,从而实现数据的存储与读取。
      在简单的项目中,有时候可以省略UserPo,直接使用Map对象来表示User数据。但是在大型项目中,强烈建议使用UserPo作为持久化对象,在数据访问层中使用UserDao进行数据持久化操作,从而使系统的数据访问更加清晰、灵活、易于扩展。

我对ssm框架的的理解

  1. 它主要有,由底层到上层描述,model(dto)实体类,dao,service,controller
  2. model层中是~po,用来定义数据结构,与数据库表结构一一对应,包含表中字段信息,
    2.1 dao层中是~dao文件,存储的是持久化的接口方法,即对数据库表的一些列操作的定义,具体的sql实现语句则是在dao文件夹的.xml文件中,写完这个.xml文件要绑定在mybatis的配置文件中
  3. 接着就是写service层,来调dao层(dao层包含对数据库的具体操作),和dao层有些微差别(就是很像)一般业务和数据库对应,基本上就是dao层中的mybatis文件夹
    3.1 调dao层,就要把dao层组合进来,就是把~mapper定义进来,然后写set方法,这样spring就可以托管它了,注入spring,有注解可以自动注入
    image
    业务层调dao层的核心,上面的代码是引入~mapper,下面的是调用它的方法
  • @Resource@Override都是Java中的注解(Annotation)。

@Resource注解常用于依赖注入(Dependency Injection)和命名资源的引用。它可以自动装配一个Bean,将该Bean注入到指定的属性、方法或构造函数中。它通常用来替代@Autowired@Inject注解,因为它可以指定具体的名称或类型来注入一个Bean。例如:

public class UserService {

    @Resource
    private UserDao userDao;

    //...
}

@Override注解用于表示一个方法是重写(Override)了父类或接口中的同名方法。如果父类或接口中没有该方法,但是你使用@Override注解来标记 该方法,编译器就会提示错误。在Java5之前,我们只能通过方法名称和参数列表来判断一个方法是否重写了父类方法,但这种方式容易出错,因为有可能我们写错了方法名或者参数列表。使用@Override注解来标记重写的方法可以避免这种问题,从而提高代码的可读性和可维护性。例如:

public class UserDAOImpl implements UserDAO {

    @Override
    public User findUserByName(String name) {
        //...
    }

    //...
}

注意:@Override注解只能用于方法,不能用于属性或构造函数。此外,它只能用于重写父类或接口的方法,而不能用于同名但不是重写的方法。

  • @Autowired是Spring框架中的一种依赖注入(Dependency Injection)方式,用于自动装配Bean。它可以在Spring容器中根据类型或名称自动匹配一个合适的Bean,并将其注入到指定的属性、方法或构造函数中。

在使用@Autowired注解前需要先在Spring配置文件中声明一个Bean,在类的成员变量、Setter方法或构造函数上标注@Autowired注解,Spring框架 就会自动在容器中找到匹配的Bean来注入。

例如,我们声明了一个UserDao接口:就是这样注入的

public interface UserDao {
    //...
}

然后,我们在Spring的配置文件中声明了一个UserDaoImpl类,并将其作为“userDao”这个Bean:

<bean id="userDao" class="com.example.dao.UserDaoImpl">
   <!-- 为UserDaoImpl注入所需的依赖 -->
</bean>

最后,在我们需要使用UserDao的类中使用@Autowired注解即可自动注入UserDaoImpl对象:

public class UserService {

    @Autowired
    private UserDao userDao;

    //...
}

**这样,Spring框架就会自动找到Spring容器中名称为“userDao”的Bean,并将其注入到UserService类的userDao属性中。

@Autowired注解还有一些属性,可以自定义注入的Bean的名称、类型、是否必须注入等,从而满足复杂场景下的依赖注入需求。

  • 我的项目里,service层在实现model中的查询???InterfaceCriteria
    • 并不是,他只是把它当作一个现成的数据类型,
      service层实现的是dao文件夹中mybatis文件夹中的文件,一一对应
  • bean是一个组件
    在Java语言中,Bean通常用于描述一个特定的实体对象,如User、Order、Product等,用于封装业务数据和业务逻辑。当然,Bean还有很多其他的应用 场景,如在Spring框架中,Bean是一种重要的组件,用于描述和管理应用程序的各种组件。
    在Spring中,我们把所有的Bean都交由Spring IoC容器来管理,通过IoC容器,我们可以方便地从Spring容器中获取Bean,并将Bean的管理工作交给Spring框架来实现。通过配置Spring的XML或注解方式,可以灵活配置Bean的创建、注入和销毁等行为,极大地提高了系统的可扩展性和可维护性。

关于sqlsessionfactory

User:这是干什么的
assistant: 上述代码是在Spring中使用Mybatis框架时配置MapperScannerConfigurer的示例。该配置用于自动扫描指定包下的Mapper接口,并使用相应的工厂类(即sqlSessionFactory)生成对应的Mapper代理对象。

具体来说,这段代码使用了org.mybatis.spring.mapper.MapperScannerConfigurer类,该类是Mybatis提供的一个Spring Bean后置处理器,用于自动扫描指定的接口包路径下的Java文件,找到其中的Mapper接口,并将其交给Spring进行管理。

该配置中,<property>标签用于设置MapperScannerConfigurer的属性,包括:

  • basePackage:指定Mapper接口所在的包路径。该属性用于指定需要扫描的Mapper接口所在的包路径,多个包路径可以用逗号分隔。例如:<property name="basePackage" value="cn.crap.dao" /> 表示扫描cn.carp.dao包及其子包下的Mapper接口。
  • sqlSessionFactoryBeanName:指定SqlSessionFactory的名称。该属性用于指定SqlSessionFactory Bean的名称,即Mybatis的SqlSessionFactory 实例所在的Spring Bean的名称,默认值是sqlSessionFactory。通常情况下,我们并不需要设置这个属性。

总之,这段配置的作用就是在Spring容器启动时,扫描指定包路径下的Mapper接口,并为这些接口生成对应的Mapper代理对象,从而方便在代码中使用SqlSession进行数据库操作。

难道这样自动扫描了就不用注册到mybatisconfig.xml中了吗不是,扫描之后就不用写.imp的实现了
SqlSession是MyBatis框架中的一个关键接口,它表示和数据库之间的一个会话,用于执行SQL语句和管理事务。
SqlSessionFactory是MyBatis框架中的一个工厂类,用于创建SqlSession实例对象。它是MyBatis框架中的核心接口,同时也是一个线程安
全的对象,它的实例化通常是一个比较耗费资源的操作,因此一个应用中通常只需要一个SqlSessionFactory即可。

标签:Spring,dao,29,接口,Bean,2023,日晚,方法,注解
From: https://www.cnblogs.com/barry-first/p/17270168.html

相关文章

  • 每日总结 3.29
    今天进行了双人作业的用户说明文档编写,对程序打包上传。今天继续学习微信小程序的开发代码学习,继续页面的编写,下面是效果演示: 明天继续小程序的学习。 ......
  • 3.29 c提高 6day 继承
    1.继承中的构造和析构--执行顺序--父类构造子类构造析构子类析构父类2.继承中同名成员的处理1.当子类和父类有同名成员时,子类的同名成员会隐藏父类的同名成员class......
  • 【日总结】2023.3.29
    happyguyround,godround2023省选模拟happyguyroundT1游戏贪心题。首先可以观察到两个性质:\(a_1,a_n\)肯定最后取;若\(a_{i-1}>a_{i}<a_{i+1}\),那么......
  • objectARX环境配置指南 VS2019+AutoCad2023 (在VS中创建ARX项目指南)
    一、下载四个软件,缺一不可(注意版本对应,注意版本对应)VisualStudioAutoCadobjectARXSDKObjectARXWizards版本对应见下:有道云笔记(youdao.......
  • 3.29软件工程学习总结
    今天继续小组服务外包杯的项目前端页面开发,在页面展示上尝试了很多种方法和形式,页面的连接上出现了一些问题,后续完成了所有页面的制作后再去解决这个问题。下面是今天......
  • 02web服务器3.29
    web服务器技术ASP微软,国内最早出的就是asp在html里嵌入VB的脚本,asp+com;在asp开发中,基本一个页面都有几千行,页面及其混乱。维护成本高c#lls<h1>......
  • 3.29每日总结
    今天学习了mybatis的基本用法,mybatis是方便增删改查编写提供更大便利的方便工具,在今天的学习中成功实现了mybatis的配置和简单实用,对其中的低层代码和用法有了进一步的认......
  • 3月29日课后总结
    3/29课后总结Process类中得方法frommultiprocessingimportProcessimporttimedeftest():print(11)time.sleep(5)if__name__=='__main__':p=......
  • 2023省选联考复习
    字符串\(KMP\)\(Z\)函数字符串哈希\(Manacher\)\(PAM\)回文自动机\(ACAM\)\(AC\)自动机\(SAM\)后缀自动机*\(SA\)后缀数组*\(ST\)后缀树......
  • 【2023-03-29】家和旺事
    20:00过了几十年我才发现,我可以用一个不一样的问题来面对我的人生。不是:我为何活着?而是:我要用我被赋予的生命做些什么?                ......