Spring & Mybatis

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <parent>
      <artifactId>spring</artifactId>
      <groupId>org.example</groupId>
      <version>1.0-SNAPSHOT</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <dependencies>
      //spring核心容器
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context</artifactId>
          <version>5.2.10.RELEASE</version>
      </dependency>
      //数据源druid
      <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>druid</artifactId>
          <version>1.1.12</version>
      </dependency>
      //整合mybatis
      <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
          <version>3.5.9</version>
      </dependency>
      <!--Mybatis 整合spring-->
      <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis-spring</artifactId>
          <version>1.3.0</version>
      </dependency>
      //sql驱动
      <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>5.1.45</version>
      </dependency>
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-jdbc</artifactId>
          <version>5.2.10.RELEASE</version>
      </dependency>
      <!--spring 整合测试-->
      <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.12</version>
          <scope>test</scope>
      </dependency>
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-test</artifactId>
          <version>5.2.10.RELEASE</version>
      </dependency>
  </dependencies>

</project>

config包

  • SpringConfig

    package com.yang.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.yang")
    @PropertySource("classpath:jdbc.properties")
    @Import({SpringDataSource.class,MybatisConfig.class})
    public class SpringConfig {
    }
  • MybatisConfig

    package com.yang.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 {

       @Bean
       public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){
           SqlSessionFactoryBean sfb = new SqlSessionFactoryBean();
           sfb.setTypeAliasesPackage("com.yang.domain");
           sfb.setDataSource(dataSource);
           return sfb;
      }
       //ctrl+N,搜索类
       @Bean
       public MapperScannerConfigurer mapperScannerConfigurer(){
           MapperScannerConfigurer msc = new MapperScannerConfigurer();
           msc.setBasePackage("com.yang.dao");
           return msc;
      }
    }
  • SpringDataSourceConfig

    package com.yang.config;

    import com.alibaba.druid.pool.DruidDataSource;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;

    import javax.sql.DataSource;

    public class SpringDataSource {
       @Value("${jdbc.driver}")
       private String drive;
       @Value("${jdbc.url}")
       private String url;
       @Value("${jdbc.username}")
       private String username;
       @Value("${jdbc.password}")
       private String password;

       @Bean
       public DataSource dataSource(){
           DruidDataSource ds = new DruidDataSource();
           ds.setDriverClassName(drive);
           ds.setUrl(url);
           ds.setUsername(username);
           ds.setPassword(password);
           return ds;
      }
    }

    Dao包

    package com.yang.dao;


    import com.yang.domain.User;
    import org.apache.ibatis.annotations.Select;
    import org.springframework.stereotype.Repository;

    import java.util.List;

    @Repository
    public interface UserDao {
     @Select("select * from tb_user where id=#{id}")
     User findById(int id);
     @Select("select * from tb_user")
     List<User> selectByAll();
    }
  • Domain

    package com.yang.domain;

    public class User {
       private Integer id;
       private String name;
       private Integer age;

       public Integer getId() {
           return id;
      }

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

       public String getName() {
           return name;
      }

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

       public Integer getAge() {
           return age;
      }

       public void setAge(Integer age) {
           this.age = age;
      }

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

    service包

    Impl

    package com.yang.service.Impl;

    import com.yang.dao.UserDao;
    import com.yang.domain.User;
    import com.yang.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;
       @Override
       public User select(int id) {

           User user = userDao.findById(id);
           return user;
      }

       @Override
       public List<User> selectByAll() {
           List<User> users = userDao.selectByAll();
           return users;
      }
    }
    package com.yang.service;

    import com.yang.domain.User;

    import java.util.List;

    public interface UserService {
       User select(int id);
       List<User> selectByAll();
    }

    App

    package com.yang;

    import com.yang.config.SpringConfig;
    import com.yang.domain.User;
    import com.yang.service.UserService;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;

    public class App {
       public static void main(String[] args) {
           ApplicationContext ac = new AnnotationConfigApplicationContext(SpringConfig.class);
           UserService bean = ac.getBean(UserService.class);
           User user = bean.select(1);
           System.out.println(user);
      }
    }

    jdbc.properties

    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/spring_db?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8
    jdbc.username=root
    jdbc.password=root

     

Spring & junit

package com.yang;

import com.yang.config.SpringConfig;
import com.yang.domain.User;
import com.yang.service.UserService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import java.util.List;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpringConfig.class)
public class ServiceTest {

   @Autowired
   private UserService userService;

   @Test
   public void selectById(){
       User user = userService.select(1);
       System.out.println(user);
  }
   @Test
   public void selectByAll(){
       List<User> users = userService.selectByAll();
       for (User user : users) {
           System.out.println(user);
      }

  }
}