Spring整合Mybatis和Junit

使用纯注解开发Spring,并整合Mybatis和Junit(Maven)

  1. 导入对应依赖
    1. Spring依赖:
      1. Spring_context
    2. Mybatis依赖:
      1. Druid
      2. Mybatis
      3. Mybatis-spring(Mybatis下)
      4. Mysql-connector-java
      5. spring-jdbc
    3. Junit依赖:
      1. spring_test(所有Spring依赖的版本需一致)
        <version>5.2.10.RELEASE</version>
      2. Juint
    4. 对应Pom文件
      <?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">
        <modelVersion>4.0.0</modelVersion>
      
        <groupId>com.itheima</groupId>
        <artifactId>spring_15_spring_mybatis</artifactId>
        <version>1.0-SNAPSHOT</version>
      
        <dependencies>
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.10.RELEASE</version>
          </dependency>
          <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.16</version>
          </dependency>
      
          <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.6</version>
          </dependency>
      
          <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
          </dependency>
      
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.2.10.RELEASE</version>
          </dependency>
      
          <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.0</version>
          </dependency>
          <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
          </dependency>
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.2.10.RELEASE</version>
          </dependency>
      
        </dependencies>
      </project>
      
  2. 进行相关配置
    1. SpringConfig
      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
      //定义扫描的路径从中找出标识了需要装配的类自动装配到spring的bean容器中
      @ComponentScan("com.itheima")
      //加载类路径jdbc.properties文件
      @PropertySource("classpath:jdbc.properties")
      //导入其他配置文件 如果有多个,使用{}
      @Import({JdbcConfig.class,MybatisConfig.class})
      public class SpringConfig {
      }
      

    2. JdbcConfig
      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 JdbcConfig {
          //使用jdbc.properties里的内容
          @Value("${jdbc.driver}")
          private String driver;
          @Value("${jdbc.url}")
          private String url;
          @Value("${jdbc.username}")
          private String userName;
          @Value("${jdbc.password}")
          private String password;
      
          //定义bean 返回dataSource对象
          @Bean
          public DataSource dataSource(){
              DruidDataSource ds = new DruidDataSource();
              ds.setDriverClassName(driver);
              ds.setUrl(url);
              ds.setUsername(userName);
              ds.setPassword(password);
              return ds;
          }
      }

    3. MybatisConfig

      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,SqlSessionFactoryBean,用于产生SqlSessionFactory对象
          @Bean
          public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource){
              SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
              ssfb.setTypeAliasesPackage("com.itheima.domain");//管理对象所在目录
              ssfb.setDataSource(dataSource);
              return ssfb;
          }
          //定义bean,返回MapperScannerConfigurer对象
          @Bean
          public MapperScannerConfigurer mapperScannerConfigurer(){
              MapperScannerConfigurer msc = new MapperScannerConfigurer();
              msc.setBasePackage("com.itheima.dao");//数据层接口所在目录
              return msc;
          }
      }
      

  3. 定义你所管理的对象
    import java.io.Serializable;
    
    public class Account implements Serializable {
    
        private Integer id;
        private String name;
        private Double money;
    
        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 Double getMoney() {
            return money;
        }
    
        public void setMoney(Double money) {
            this.money = money;
        }
    
        @Override
        public String toString() {
            return "Account{" +
                    "id=" + id +
                    ", name='" + name + '\'' +
                    ", money=" + money +
                    '}';
        }
    }

  4. 定义数据层接口
    import com.itheima.domain.Account;
    import org.apache.ibatis.annotations.Delete;
    import org.apache.ibatis.annotations.Insert;
    import org.apache.ibatis.annotations.Select;
    import org.apache.ibatis.annotations.Update;
    
    import java.util.List;
    
    public interface AccountDao {
    
    
        void save(Account account);
    
        @Delete("delete from tbl_account where id = #{id} ")
        void delete(Integer id);
    
        @Update("update tbl_account set name = #{name} , money = #{money} where id = #{id} ")
        void update(Account account);
    
        @Select("select * from tbl_account")
        List<Account> findAll();
    
        @Select("select * from tbl_account where id = #{id} ")
        Account findById(Integer id);
    }

  5. 定义业务层接口,并实现
    import com.itheima.domain.Account;
    
    import java.util.List;
    
    public interface AccountService {
    
        void save(Account account);
    
        void delete(Integer id);
    
        void update(Account account);
    
        List<Account> findAll();
    
        Account findById(Integer id);
    
    }
    
    import com.itheima.dao.AccountDao;
    import com.itheima.domain.Account;
    import com.itheima.service.AccountService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import java.util.List;
    @Service
    public class AccountServiceImpl implements AccountService {
    
        @Autowired//自动注入
        private AccountDao accountDao;
    
        public void save(Account account) {
            accountDao.save(account);
        }
    
        public void update(Account account){
            accountDao.update(account);
        }
    
        public void delete(Integer id) {
            accountDao.delete(id);
        }
    
        public Account findById(Integer id) {
            return accountDao.findById(id);
        }
    
        public List<Account> findAll() {
            return accountDao.findAll();
        }
    }
    
  6. 定义数据层接口相关配置(注:接口和xml配置文件需在同一目录下)

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <!--
     namespace:命名空间//对应其数据层接口
    -->
    <mapper namespace="com.itheima.dao.AccountDao">
    
        <insert id="save">
          insert into tbl_account(name,money) values(#{name},#{money})
        </insert>
    </mapper>

  7. 定义Juint测试

    import com.itheima.config.SpringConfig;
    import com.itheima.domain.Account;
    import com.itheima.service.AccountService;
    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;
    //固定
    @RunWith(SpringJUnit4ClassRunner.class)
    //对应Spring配置文件
    @ContextConfiguration(classes = SpringConfig.class)
    public class AccountServiceTest {
        //自动注入
        @Autowired
        private AccountService accountService;
    
        @Test
        public void test(){
            Account account=new Account();
            account.setMoney(1.03);
            account.setName("mak");
            accountService.delete(3);
           accountService.save(account);
    
        }
    }
    

  8. 文件目录

     

参考文档:黑马程序员2022最新SSM框架教程_Spring+SpringMVC+Maven高级+SpringBoot+MyBatisPlus企业实用开发技术_哔哩哔哩_bilibili

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值