1.今日のブックマーク
SpringBoot統合MyBatisプロジェクトで、一度に複数のパッケージの下でDAOインターフェイスクラスに注釈を付けてスキャンする方法は?
言い換えると、@ MapperScanを使用して、異なるパッケージパスにある複数のDAOマッピングクラスに注釈を付ける方法は?
言い換えれば、@ MapperScan注釈スキャンインターフェイスクラスの3つの設定メソッドは何ですか?
プロジェクトテクノロジースタックは、SpringBoot 2 + MyBatis 3をアップグレードします。私たちが踏んだピットについて話すと、私たちは夢の中で剣を見ます。
2.夢の中で花を探る
各DAOインターフェイスクラス@Mapper
ノートを追加する場合、これは面倒であるだけでなく、非常に複雑です。SpringBoot MyBatis統合プロジェクトでは、@MapperScan
注釈を使用して、マルチパスマルチパケットスキャンを実現できます。
1)次のように使用できます@MapperScan(basePackages = {"", ""})
。
@Configuration
@MapperScan(basePackages = {
"com.meiwei.tan.dao.mall", "com.meiwei.ping.dao.crm"})
public class MyBatisConfiguration {
2)@MapperScan(value = {"", ""})
同じ効果で使用することもできます:
@Configuration
@MapperScan(value = {
"com.meiwei.tan.dao.mall", "com.meiwei.ping.dao.crm"})
public class MyBatisConfiguration {
3)@MapperScan(basePackageClasses = {xx1.class, xx2.class})
このように使用されることはめったにありませんが、指定されたクラスの複数のスキャンを使用することもあります。
@Configuration
@MapperScan(basePackageClasses = {
OrderDao.class, UserDao.class})
public class MyBatisConfiguration {
上記のもの@MapperScan 注解,三种设置方式
は、最終的にスキャンされているターゲットの効果を達成することができます。明確なビューのためにソースコードを見てください、ここに段落があります:
3.悪い操作
それでも構成パッケージパスの下のインターフェイスクラスがスキャンされない場合は、次の構成で問題がないかどうかを確認してください
。1)org.mybatis.spring.bootが
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
2)Mybatisの依存バージョンがSpringBootのバージョンと互換性があるかどうか
例:org.mybatis.spring.bootの依存バージョンは1.3.2で、springbootはバージョン2.0.2を使用します。@ mapperアノテーションがPOJOエンティティクラスで使用される場合、正常に機能します。動作しますが、@ mapperに注釈を付けて@mapperScanを使用すると、エラーが発生する可能性があります。
3)システム構成またはインスタンスがロードおよび作成されているかどうか。
テストケースを使用してローカルで実行する場合は、最初にシステム構成が正常にロードおよび初期化されていることを確認する必要があります。SpringMVCのさまざまな環境およびシステム構成と比較して、SpringBootのゼロ構成機能はいくつかの場所を占めています。構成は見落とされたり、忘れられたりしがちです。チェックリスト:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = App.class)
public class JUnitTestBase {
@BeforeClass
public static void beforeClass(){
System.setProperty("app.id","meiwei");
System.setProperty("apollo.bootstrap.enabled","true");
System.setProperty("apollo.bootstrap.namespaces","application,db,dubbo,redis,mq");
}
}
@EnableAutoConfiguration()
@Configuration()
@ComponentScan(value = {
"com.meiwei.tan.service", "com.meiwei.*.service"})
@EnableTransactionManagement
@EnableAspectJAutoProxy
public class App {
}
public class OrderServiceTest extends JUnitTestBase {
@Autowired
IOrderService iOrderService;
@Test
public void testOrderDetail() {
OrderDetailQuery orderDetailQuery = new OrderDetailQuery();
orderDetailQuery.setBizChannel(0);
OrderDO orderDO = iOrderService.orderDetail(orderDetailQuery);
System.out.println(JSON.toJSONString(orderDO));
}
}