首页 > 编程语言 >JAVA Spring学习笔记------Spring整合Mybatis

JAVA Spring学习笔记------Spring整合Mybatis

时间:2022-09-28 18:55:48浏览次数:50  
标签:JAVA Spring org Bean demo Mybatis import com public

Spring整合Mybatis

首先看一下项目目录

 

 

 因为以前所有的知识点都在一个模块里,而且目录比较混乱

所以对模块重构了一下

首先我们要在pom.xml文件中声明所需要的依赖

新增这两个依赖

    <!--    利用spring操作数据库依赖  -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.3.23</version>
    </dependency>
    <!--mybaties 与spring整合的依赖-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>2.0.6</version>
    </dependency>

然后介绍一下各个类的作用

Domain是对应数据库的类实体,这个类不需要声明为Bean

package com.demo.Domain;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@AllArgsConstructor
@NoArgsConstructor
@Data
public class User {
    private int id;
    private String Password;
}

 

然后是config文件,里边是各种配置类

SpringConfig配置类

 

 

package com.demo.config;

import org.springframework.context.annotation.*;
//声明这是一个配置类
@Configuration
//扫描所有的Bean文件 @ComponentScan("com.demo") //@PropertySource("Jdbc.property")

//引用其他的配置类,各个配置类分开 @Import({JdbcConfig.class, MybatisConfig.class}) public class SpringConfig { }

JdbcConfig配置类

package com.demo.config;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;

import javax.sql.DataSource;

//@Configuration
public class JdbcConfig {
    //首先我们定义一个方法来获得要管理的对象
    //然后我们通过@Bean来表示当前方法是的返回值是一个Bean
    @Bean
    public DataSource getDataSource(){
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/mp");
        dataSource.setUsername("root");
        dataSource.setPassword("root");
        return dataSource;
    }
}

为什么要提供一个DataSource的Bean

因为利用Spring链接数据库是我们要创建一个SqlSeesionFactoy对象

原来是通过xml文件来配置相关的信息

现在我们直接通过DataSource就能创建SqlSeesionFactoy对象

package com.demo.config;

import com.demo.Dao.UserDao;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.context.annotation.Bean;

import javax.sql.DataSource;

public class MybatisConfig {
    //在spring中 如果想要动用第三方类形成的Bean
    //我们直接利用形参传入即可
    //因为spring会自动扫描所需的依赖
    //前提是已经把第三方类声明为bean类型
    //mybitas通过sqlSessionFactor来创建sqlsession对象
    //sqlSession是操作数据库的类
   //Spring提供了SqlSessionFactoryBean来简化这个过程
  //我们只需要传入一个DataSource对象就可完成创建
  //同时还要说明数据库查询方法对应的接口
@Bean public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){ SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean(); sessionFactoryBean.setTypeAliases(User.class); sessionFactoryBean.setDataSource(dataSource); return sessionFactoryBean; }
  //设置Mapper对应的类 @Bean public MapperScannerConfigurer mapperScannerConfigurer(){ MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer(); mapperScannerConfigurer.setBasePackage("com.demo.Dao"); return mapperScannerConfigurer; } }

Config各个类介绍完毕

然后Dao是我们实现数据库查询的接口

也是利用注解开发的

UserDao

package com.demo.Dao;

import com.demo.Domain.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Component;

import java.util.List;

@Mapper
public interface UserDao {
    @Select("select * from user")
    public List<User> getAll();
 }

@Mapper 也是把这个接口声明为一个Bean 同时也说明这是一个Mapper类

然后就是服务层Service

首先是接口

package com.demo.Service;

import com.demo.Dao.UserDao;
import com.demo.Domain.User;

import java.util.List;

public interface UserService {
    public List<User> getAll();
}

然后是实现类

@Service说明这也是一个Bean

@Autowired  自动装填

因为我们已经把UserDao声明为一个Bean了

package com.demo.Service.impl;

import com.demo.Dao.UserDao;
import com.demo.Domain.User;
import com.demo.Service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserDao userDao;
    public List<User> getAll() {
        return userDao.getAll();
    }
}

最后是测试类

package com.testDemo;

import com.demo.Domain.User;
import com.demo.Service.UserService;
import com.demo.Service.impl.UserServiceImpl;
import com.demo.config.SpringConfig;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import java.util.List;

public class Test {
    @org.junit.Test
    public void test(){
        ApplicationContext applicationContext =
                new AnnotationConfigApplicationContext(SpringConfig.class);
        UserService userService = (UserService) applicationContext.getBean(UserServiceImpl.class);
        List<User> userList = userService.getAll();
        for(User user:userList){
            System.out.println(user.getId()+" "+user.getPassword());
        }
    }
}

标签:JAVA,Spring,org,Bean,demo,Mybatis,import,com,public
From: https://www.cnblogs.com/zzRh-5479/p/16739224.html

相关文章

  • Spring mvc源码分析系列--Servlet的前世今生
    Springmvc源码分析系列--Servlet的前世今生概述上一篇文章Springmvc源码分析系列--前言挖了坑,但是由于最近需求繁忙,一直没有时间填坑。今天暂且来填一个小坑,这篇文章我......
  • java异常
    西二旗是一个恐怖的地铁站,光排队得排很久。只要写代码就存在bug,唯一一个不出bug得方法就是不写代码。异常:在程序的运行过程中,出现的不正常情况叫做异常.注意:1.相同的代......
  • SpringBoot框架:第二章:SpringBoot中static和templates二个目录下的页面和静态资源访问
    静态页面:在resources建立一个static目录和index.htm静态文件,访问地址http://localhost:8080/index.htmlspringboot项目只有src目录,没有webapp目录,会将静态访问(html/......
  • java.lang.RuntimeException: Unable to instantiate class java.lang.Integer with v
    代码为@Value("${address.count}")privateIntegercount;单元测试中代码修改为@InjectableprivateIntegercount=1000;单元测试中类型没法自动转换,......
  • linux系统下运行java项目,(做笔记)
    原链接处:Linuxjar包后台运行-阿里云开发者社区(aliyun.com) Linuxjar包后台运行2016-04-10 1755简介: Linux运行jar包命令如下:方式一:java -jarshareniu.ja......
  • Java11安装(win11)
    下载JDK解压版本下载后解压,并放到一个没有中文路径的目录,如图所示:配置Java环境变量以Windows11系统为例,打开设置,搜索“环境”,点击“编辑系统环境变量”,如图所示:点击......
  • Java Script 原型链原理
    所有对象都有隐式原型;原型也是对象,也有隐式原型.functionUser(){}console.log(User.prototype);functionUser(){}varu=newUser();console.log(u.hasOwnProper......
  • springboot 错误笔记
    1.springlogback控制台日志出现INFO类似错误显示字符:能够出现上面的原因是你的控制台输出工具不支持ANSI彩色字符,但是你的Spring配置文件中又......
  • Spring-依赖注入
    1.依赖注入(DI)依赖注入是IOC(ioc获取资源的方式:之前要主动获取,现在是被动接受)的具体实现方式,在依赖的对象设置相对应的方法(比如set方法,有参构造),以当前设置好的方法来接......
  • SpringBoot框架:第一章:基础配置和介绍
    什么是SpringBoot?SpringBoot就是一些库的集合,它能够被任意项目的构建系统所使用,简化新Spring应用的初始搭建以及开发过程,简化配置,用更简单的办法整合第三方其他技术。......