Spring纯注解方式整合MyBatists

项目结构:


serdao:  作为数据层接口,规定执行SQL语句的具体方法,本质上实现SQL语句和SQL方法的映射关系
POJO:  POJO实体类,用来封装数据(要提供set和get方法),有的习惯命名domain
USerService : 业务层接口,规定业务逻辑标准,提供SQL方法
USerServiceImpl  :作为业务层接口AccountService的接口实现类,在这个类中要实例化继承业务层接口并且实现抽象方法的实例化。


Spring整合MyBatis

在POM文件中导入相关依赖:

1.Spring-JDBC

<!--Spring  操作数据库所需依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.2.12.RELEASE</version>
        </dependency>

2.mybatis-spring

 <!--Spring 整合MyBatis所需接口标准-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.6</version>
        </dependency>

3.Druid

  <!--Druid  数据源管理-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.6</version>
        </dependency>

4.MySQl

 <!--MySQl 连接器-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.27</version>
        </dependency>

 POJO:

package com.practice.pojo;

import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;


public class User {
    private int id;
    private  String type;
    private String description;
    private  String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", type='" + type + '\'' +
                ", description='" + description + '\'' +
                ", name='" + name + '\'' +
                '}';
    }
}

配置类:

//1.JDBCConfig.class
//数据库驱动类
package com.practice.config;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Repository;
import javax.sql.DataSource;
public class jdbcConfig {
    @Value("${username}")
    private String username;
    @Value("${password}")
    private String password;
    @Value("${DriverClassName}")
    private String DriverClassName;
    @Value("${url}")
    private  String url;
    /*
    * 配置Druid数据源对象(使用注解,让spring容器管理第三方bean)
    * */
    @Bean
    public DataSource dataSource(){
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setUrl(url);
        druidDataSource.setUsername("root");
        druidDataSource.setDriverClassName(DriverClassName);
        druidDataSource.setPassword(password);
        return druidDataSource;
    }
}



//2.Mybaits.class   
//Mybatis核心配置类,使用配置类的方式代替原生开发使用的核心配置文件
    
    
    package com.practice.config;

import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.context.annotation.Bean;

import javax.sql.DataSource;

public class MybatisConfig {
    /*
    * 配置Mapper的扫描路径,结果作为一个Bean返回
    * */
    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer(){
        MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
        mapperScannerConfigurer.setBasePackage("com.practice");
        return mapperScannerConfigurer;
    }
    /*
    * 配置SQLsession对象,返回一个bean
    * */
    @Bean
    public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource);
        sqlSessionFactoryBean.setTypeAliasesPackage("com.practice");
        return sqlSessionFactoryBean;
    }
}



//3.SpringConfig.class
    
 //Spring核心配置类
    
 package com.practice.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.PropertySource;

@Configuration     //声明配置类
@ComponentScan("com.practice")     //配置bean扫描包的位置
@PropertySource("classpath:jdbc.properties")   //加载配置文件
@Import({jdbcConfig.class, MybatisConfig.class})    //导入其他配置类,如果不导入其他配置类,所有的配置类都要声明
public class SpringConfig {
}

   

UserService:

package com.practice.service;

import com.practice.pojo.User;

import java.util.List;
//规定接口标准
public interface UserService {
    List<User> selectAll();
}

UserServiceImpl:

package com.practice.service.Impl;

import com.practice.dao.UserDao;
import com.practice.pojo.User;
import com.practice.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
@Service("userservice")   //通过id的方式标识bean
public class UserServiceImpl implements UserService {
    @Autowired     //使用自动装配,注入bean
    private UserDao userDao;
    public List<User> selectAll() {
        return userDao.selectAll();
    }
}

Application.class

package com.practice;

import com.practice.config.SpringConfig;
import com.practice.pojo.User;
import com.practice.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import java.util.List;

public class Application {
    public static void main(String[] args) {
        ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfig.class);
        UserService userService = (UserService) applicationContext.getBean("userservice");
        List<User> userList = userService.selectAll();
         System.out.println(userList);
    }
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值