1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Spring Data MyBatis基于 MyBatis 的 Spring Data 擴(kuò)展

        聯(lián)合創(chuàng)作 · 2023-09-28 04:31

        Spring Data 項(xiàng)目的主要目標(biāo)是使構(gòu)建使用數(shù)據(jù)訪問(wèn)技術(shù)的 Spring 應(yīng)用程序變得更加容易。此模塊處理增強(qiáng)基于 MyBatis 的數(shù)據(jù)訪問(wèn)層的支持。

        通過(guò)使用此模塊,你可以在基于MyBatis為ORM的結(jié)構(gòu)下使用Spring Data模式帶來(lái)的便利性。

        如果你還沒(méi)有接觸過(guò)Spring Data,建議先了解下該項(xiàng)目

        支持的一些特性

        • 對(duì)標(biāo)準(zhǔn)Entity支持完整CRUD操作

        • 支持通過(guò)接口中的方法名生成對(duì)應(yīng)的查詢

        • 提供基礎(chǔ)屬性的實(shí)體基類

        • 支持透明審計(jì)(如創(chuàng)建時(shí)間、最后修改)

        • 自持自定義編寫(xiě)基于MyBatis的查詢,方便而不失靈活性

        • 方便的與Spring集成

        • 支持MySQL、Oracle、SQL Server、H2、PostgreSQL等數(shù)據(jù)庫(kù)

        獲得幫助

        這里有一份文檔可以幫助你快速學(xué)習(xí) Spring Data Mybatis。 reference documentation

        如果你有任何疑問(wèn)或者建議,可以錄一個(gè)issue 給我。

        快速開(kāi)始

        通過(guò) Maven 引入依賴包:

        <dependency>
          <groupId>com.ifrabbit</groupId>
          <artifactId>spring-data-mybatis</artifactId>
          <version>1.0.8.RELEASE</version>
        </dependency>

        最簡(jiǎn)單的通過(guò)Java注解配置的Spring Data Mybatis 配置如下所示:

        @Configuration
        @EnableMybatisRepositories(
                value = "org.springframework.data.mybatis.repository.sample",
                mapperLocations = "classpath*:/org/springframework/data/mybatis/repository/sample/mappers/*Mapper.xml"
        )
        public class TestConfig {
        
            @Bean
            public DataSource dataSource() throws SQLException {
                return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.H2).addScript("classpath:/test-init.sql").build();
            }
        
            @Bean
            public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource) {
                SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
                factoryBean.setDataSource(dataSource);
                return factoryBean;
            }
        
            @Bean
            public PlatformTransactionManager transactionManager(DataSource dataSource) {
                return new DataSourceTransactionManager(dataSource);
            }
        
        }

        創(chuàng)建一個(gè)實(shí)體類:

        @Entity
        public class User extends LongId {
        
          private String firstname;
          private String lastname;
               
          // Getters and setters
          // (Firstname, Lastname)-constructor and noargs-constructor
          // equals / hashcode
        }

        創(chuàng)建一個(gè)數(shù)據(jù)操作接口,使用包名 com.example.repositories:

        public interface UserRepository extends CrudRepository<User, Long> {
          List<User> findByLastname(String lastname);  
          
        }

        編寫(xiě)一個(gè)測(cè)試用例:

        @RunWith(SpringJUnit4ClassRunner.class)
        @ContextConfiguration(classes = AppConfig.class)
        public class UserRepositoryIntegrationTest {
             
          @Autowired UserRepository repository;
             
          @Test
          public void sampleTestCase() {
            User dave = new User("Dave", "Matthews");
            dave = repository.save(dave);
                 
            User carter = new User("Carter", "Beauford");
            carter = repository.save(carter);
                 
            List<User> result = repository.findByLastname("Matthews");
            assertThat(result.size(), is(1));
            assertThat(result, hasItem(dave));
          }
        }

        這樣就完成了。

        使用 Spring Boot

        通過(guò)maven引入:

        <dependency>
            <groupId>com.ifrabbit</groupId>
            <artifactId>spring-boot-starter-data-mybatis</artifactId>
            <version>1.0.8.RELEASE</version>
        </dependency>

        如果你需要使用自己編寫(xiě)的Mybatis Mapper,需要在application.properties中配置:

        spring.data.mybatis.mapper-locations=classpath*:/org/springframework/data/mybatis/samples/mappers/*Mapper.xml

        在Spring Boot中你不需要自己去定義SqlSessionFactory.

        完整的代碼如下:

        @SpringBootApplication
        public class SpringDataMybatisSamplesApplication {
        
            public static void main(String[] args) {
                SpringApplication.run(SpringDataMybatisSamplesApplication.class, args);
            }
        
            @Bean
            public CommandLineRunner dummyCLR(ReservationRepository reservationRepository) {
                return args -> {
                    Stream.of("Tom", "Jack", "Apple")
                            .forEach(name -> reservationRepository.save(new Reservation(name)));
                };
            }
        
        }
        
        @RepositoryRestResource // here we use RepositoryRestResource
        interface ReservationRepository extends MybatisRepository<Reservation, Long> {
        }
        
        @Entity
        class Reservation extends LongId {
        
            private String reservationName;
        
            public Reservation() {
            }
        
            public Reservation(String reservationName) {
                this.reservationName = reservationName;
            }
        
            public String getReservationName() {
                return reservationName;
            }
        
            @Override
            public String toString() {
                return "Reservation{" +
                        "reservationName='" + reservationName + '\'' +
                        '}';
            }
        }

        完整的例子可以在 https://github.com/hatunet/spring-data-mybatis-samples 找到。

        瀏覽 22
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        編輯 分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        編輯 分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            神尾舞BEST神尾舞 | 亚洲妇女下面毛茸茸 | 色二区 | 欧美三级电影免费 | 娇喘呻吟啊~啊~嗯~四合院 | 香蕉精品在线视频 | 美女扒开尿口让男人爽 | 偷拍 - 91爱爱 | 日日干麻豆 | 先锋男人资源 |