برنامه نویسی

معماری بهار سری 5. نمایش ادغام Mybatis

مقدمه

Mybatis یک چارچوب پایداری محبوب است که روشی انعطاف پذیر برای نقشه برداری اظهارات SQL به اشیاء جاوا فراهم می کند. در این مقاله ، من چگونگی پیاده سازی ادغام MyBatis را در چارچوب مانند Aspring ، پایه گذاری می کنم ، پایه و اساس اجرای پروژه Minispring من است.

اجزای اصلی

ادغام Mybatis از چندین مؤلفه اصلی تشکیل شده است:

src/com/yaruyng/batis/
├── DefaultSqlSessionFactory.java
├── DefaultSqlSession.java
├── SqlSessionFactory.java
├── SqlSession.java
└── MapperNode.java
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

اجرای SQLSessionFective

در SQLSessionFective نقطه ورود برای ایجاد است شفاهی مثال:

public class DefaultSqlSessionFactory implements SqlSessionFactory {
    @Autowired
    JdbcTemplate jdbcTemplate;

    String mapperLocations;
    Map<String, MapperNode> mapperNodeMap = new HashMap<>();

    public void init() {
        scanLocation(this.mapperLocations);
        // Initialize mapper nodes
    }

    @Override
    public SqlSession openSession() {
        SqlSession newSqlSession = new DefaultSqlSession();
        newSqlSession.setJdbcTemplate(jdbcTemplate);
        newSqlSession.setSqlSessionFactory(this);
        return newSqlSession;
    }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

ویژگی های کلیدی:

  1. ادغام با ظرف IOC بهار
  2. اسکن پرونده XML Mapper
  3. مدیریت جلسه

تجزیه XML MAPPER

Framework Files Mybatis Mapper XML:

private Map<String, MapperNode> buildMapperNodes(String filePath) {
    SAXReader saxReader = new SAXReader();
    URL xmlPath = this.getClass().getClassLoader().getResource(filePath);
    try {
        Document document = saxReader.read(xmlPath);
        Element rootElement = document.getRootElement();
        String namespace = rootElement.attributeValue("namespace");

        Iterator<Element> nodes = rootElement.elementIterator();
        while (nodes.hasNext()) {
            Element node = nodes.next();
            String id = node.attributeValue("id");
            String parameterType = node.attributeValue("parameterType");
            String resultType = node.attributeValue("resultType");
            String sql = node.getText();

            MapperNode selectnode = new MapperNode();
            selectnode.setNamespace(namespace);
            selectnode.setId(id);
            selectnode.setParameterType(parameterType);
            selectnode.setResultType(resultType);
            selectnode.setSql(sql);
            selectnode.setParameter("");

            this.mapperNodeMap.put(namespace + "." + id, selectnode);
        }
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    return this.mapperNodeMap;
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این اجرای:

  1. از dom4j برای تجزیه XML استفاده می کند
  2. بیانیه های SQL و ابرداده را استخراج می کند
  3. اشیاء mappernode را ایجاد می کند

ساختار کد

در کدگذاری کلاس یک عبارت SQL را نشان می دهد:

public class MapperNode {
    String namespace;
    String id;
    String parameterType;
    String resultType;
    String sql;
    String parameter;

    // Getters and setters
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

ویژگی ها:

  1. فضای نام و شناسه برای شناسایی منحصر به فرد
  2. پارامتر و اطلاعات نوع نتیجه
  3. ذخیره سازی بیانیه SQL
  4. پشتیبانی نقشه برداری پارامتر

اجرای SQLSESSION

در پیش فرض اعدام SQL را کنترل می کند:

public class DefaultSqlSession implements SqlSession {
    JdbcTemplate jdbcTemplate;
    SqlSessionFactory sqlSessionFactory;

    @Override
    public Object selectOne(String sqlid, Object[] args, 
            PreparedStatementCallBack pstmtcallback) {
        String sql = this.sqlSessionFactory.getMapperNode(sqlid).getSql();
        return jdbcTemplate.query(sql, args, pstmtcallback);
    }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

جنبه های کلیدی:

  1. بازیابی بیانیه SQL
  2. پارامتر اتصال
  3. نقشه برداری نتیجه
  4. ادغام الگوی JDBC

ادغام با IOC بهار:

ادغام Mybatis ظرف IOC بهار را افزایش می دهد:

@Autowired
JdbcTemplate jdbcTemplate;
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مزایا:

  1. تزریق وابستگی خودکار
  2. مدیریت معامله
  3. ترکیب اتصال
  4. مدیریت منابع

پیکربندی XML

به عنوان مثال پیکربندی XML MAPPER:



 namespace="com.example.UserMapper">
    

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مثال استفاده

در اینجا نحوه استفاده از ادغام MyBatis آورده شده است:

@Repository
public class UserDao {
    @Autowired
    private SqlSessionFactory sqlSessionFactory;

    public User findById(Integer id) {
        SqlSession session = sqlSessionFactory.openSession();
        try {
            return (User) session.selectOne(
                "com.example.UserMapper.findById",
                new Object[]{id},
                new UserRowMapper()
            );
        } finally {
            session.close();
        }
    }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

ویژگی های کلیدی

  1. پشتیبانی XML MAPPER

    • پیکربندی SQL مبتنی بر XML
    • پشتیبانی پویا SQL
    • نقشه برداری پارامتری
  2. مدیریت جلسه

    • انتقال اتصال
    • مرزهای معامله
    • پاکسازی منابع
  3. نقشه برداری نتیجه

    • نقشه برداری شیء
    • نوع تبدیل
    • جمع آوری
  4. ادغام بهار

    • پشتیبانی کانتینر IOC
    • مدیریت معامله
    • مدیریت منابع

جزئیات اجرای

  1. اسکن نقشه
private void scanLocation(String location) {
    String sLocation = this.getClass().getClassLoader()
            .getResource("").getPath() + location;
    File dir = new File(sLocation);
    for (File file : dir.listFiles()) {
        if (file.isDirectory()) {
            scanLocation(location + "https://dev.to/" + file.getName());
        } else {
            buildMapperNodes(location + "https://dev.to/" + file.getName());
        }
    }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  1. اعدام SQL
public Object selectOne(String sqlid, Object[] args, 
        PreparedStatementCallBack pstmtcallback) {
    String sql = this.sqlSessionFactory.getMapperNode(sqlid).getSql();
    return jdbcTemplate.query(sql, args, pstmtcallback);
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

بهترین تمرین

  1. مدیریت منابع

    • پاکسازی مناسب جلسه
    • ترکیب اتصال
    • مرزهای معامله
  2. رسیدگی به خطا

    • رسیدگی به استثناء SQL
    • پاکسازی منابع در نهایت بلوک ها
    • انتشار خطای مناسب
  3. بهینه سازی عملکرد

    • ذخیره سازی بیانیه
    • ترکیب اتصال
    • پشتیبانی پردازش دسته ای

چالش ها و راه حل های مشترک

  1. مدیریت اتصال

    • از استخر اتصال استفاده کنید
    • پاکسازی مناسب را اجرا کنید
    • مرزهای معامله را اداره کنید
  2. نقشه برداری SQL

    • پارامتر مناسب اتصال
    • تبدیل نوع نتیجه
    • دست زدن به مجموعه
  3. مدیریت معامله

    • ادغام معامله بهار
    • سطح انزوا مناسب
    • دست زدن به

پایان

اجرای ادغام MyBatis در یک چارچوب بهاری مانند:

  • جدایی نگرانی ها
  • نقشه برداری انعطاف پذیر SQL
  • مدیریت معامله
  • منبع بهینه سازی منابع:
  • درک مفاهیم اصلی mybatis
  • الگوهای ادغام بهار
  • مدیریت منابع
  • ملاحظات عملکرد

این پیاده سازی نشان می دهد که چگونه می توان ضمن حفظ سادگی و انعطاف پذیری ، یک ادغام چارچوب قوی ORM را ایجاد کرد.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا