MyBatis-Plus (MP for Short) هي أداة تحسين MyBatis. استنادًا إلى MyBatis ، فإنه يعزز فقط ولا يتغير ، ويولد لتبسيط التنمية وتحسين الكفاءة.
الوثيقة الصينية: http://baomidou.oschina.io/mybatis-plus-doc/#/
هذه المقالة تقدم
1) كيفية بنائه
2) توليد الكود (وحدة تحكم ، خدمة ، Mapper ، XML)
3) تم إجراء فئات CRUD والاستعلام الشرطي وقاعدة ترقيم الصفحات لجدول واحد من أجلك
1. كيفية بنائه
1. أولاً نقوم بإنشاء مشروع Springboot -> https://start.spring.io/
2. التبعية Maven
<Rependency> <roupeD> com.baomidou </rougiD> <StifactId> mybatis-plus-boot-starter </artifactid> <الإصدار> 2.3 </version> </rependency> <!-velocity reporency- <splection> 2.0 </version> </premency>
3. التكوين (لأنني أشعر أنه أمر كبير للغاية ، تم حذف تكوين مصدر البيانات هنا)
application.properties
MyBatis-plus.mapper-locations = classpath: /mapper/*mapper.xmlmybatis-plus.typealiasespackage=com.taven.web.springbootmp.entitymybatis-plus.global-config.id-type=3mybatis-plus.global-config egy = 2mybatis-plus.global-config.db-column-underline = truemybatis-plus.global-config.key-generator = com.baomidou.mybatisplus.incrementer.oraclekeygeneratormybatis-plus.global-config.logic-dalue-value-value mybatis-plus.global-config.logic-not- delete-value = 0mybatis-plus.global-config.sql injector = com.baomidou.mybatisplus.mapper.logicsqlinjinor#هذا يحتاج إلى تغيير إلى mybatis.glus-plus. .taven.web.springbootmp.mymetaobjecthandlermybatis-plus.configuration.map-underscore-to-camel-case = truemybatis-plus.configuration.cache- enabled = falsemybatis-plus.configuration.jdbc-tyty-type-tiled
فئة التكوين myBatisPlusConfig
استيراد org.mybatis.spring.annotation.mapperscan ؛ استيراد org.springframework.context.annotation.bean ؛ استيراد org.springframework.context.annotation.configuration ؛ استيراد com.baomidou.mybatisplus.incrementer.h2keygenerator ؛ com.baomidou.mybatisplus.incrementer.ikeygenerator ؛ استيراد com.baomidou.mybatisplus.mapper.isqlinjector ؛ استيراد com.baomidou.mybatiSplus.mapper.logicsqlinjtinor ؛ استيراد com.baomidou.mybatisplus.mapper.metling.metAldler ؛ com.baomidou.mybatisplus.plugins.paginationInterceptor ؛ استيراد com.baomidou.mybatisplus.plugins.performanceInterceptor ؛ استيراد com.taven.web.springbootmp.mymetaObjectHandler ؛ eNABLETRansActionManagement@configuration@mapperscan ("com.taven.web.springbootmp.mapper PerformanceInterceptor () {return new PerformanceInterceptor () ؛ } / * * المكون الإضافي لترقيم الصفحات ، وتحديد المستأجرين المتعددين تلقائيًا في نوع قاعدة البيانات ، يرجى الرجوع إلى الموقع الرسمي [ملحق البرنامج المساعد] * / bean paginitionInterceptor paginInterceptor () {return new paginInterceptor () ؛ } bean public metaObjectHandler metaObjectHandler () {return new MyMetAobjectHandler () ؛ } / *** حقن مولد المفتاح الأساسي* / bean public iKeyGenerator KeyGenerator () {return new H2KeyGenerator () ؛ } / *** الحقن SQL enjector* / bean public isQlinjector sqlinjector () {return new logicsqlinjector () ؛ }} استيراد com.baomidou.mybatisplus.mapper.metaobjectHandler ؛ استيراد org.apache.ibatis.reflection.metaobject ؛ استيراد org.slf4j.logger metaObjectHandler {محمية logger static logger = loggerfactory.getLogger (application.class) ؛ Override public void insertFill (metaObject metaObject) {logger.info ("افعل شيئًا لا يمكن تصريفه عند إضافته") ؛ } Override public void updatefill (metaObject metaObject) {logger.info ("افعل شيئًا غير قابل للوصف عند التحديث") ؛ }} 2. توليد الكود
تنفيذ Junit لإنشاء وحدة تحكم ، واجهة الخدمة ، التنفيذ ، Mapper و XML
استيراد org.junit.test ؛ استيراد com.baomidou.mybatisplus.generator.autogenerator ؛ استيراد com.baomidou.mybatisplus.generator.config.dataSourceConfig ؛ استيراد com.baomidou.mybatpatplus.generator.genfig.globalconfig ؛ com.baomidou.mybatisplus.generator.config.packageConfig ؛ استيراد com.baomidou.mybatisplus.generator.config.strategyconfig ؛ استيراد com.baomidou.mybatisplus.generator.config.rules.dbtype ؛ com.baomidou.mybatisplus.generator.config.rules.namingstrategy ؛/** * <p> * اختبار الجيل الكود * </p> * * @Author k god * date 2017/12/18 */public classerviceentity "com.taven.web.springbootmp" ؛ Boolean Servicenamestartwithi = false ؛ // user -> uservice ، تعيين إلى True: user -> iuserservice generateBytables (servicenamestartwithi ، packagename ، "cable" ، "station") New GlobalConfig () ؛ String dburl = "jdbc: mysql: // localhost: 3306/commoneicated" ؛ datasourceConfig dataSourCeConfig = جديد dataSourCeConfig () ؛ datasourceconfig.setdbtype (dbtype.mysql) .seturl (dburl) .setusername ("root") .SetPassword ("ROOT") .SetDriverName ("Com.MySql.jdbc.driver") ؛ strategyConfig strategyConfig = new strategyConfig () ؛ strategyConfig .setCapitalMode (true) .SetentityLombokModel (false) .setdbColumnUnderLine (true) .setnaming (namingstrategy.underline_to_camel) .setinclud Tianwen ") .SetOutputDir (" E: // dev // stsdev // spring-boot-mp // src // main // java ") .SetFileOverride (true) ؛ if (! servicenamestartwithi) {config.setservicename ("٪ sservice") ؛ } new Autogenerator (). }.تم الانتهاء من البناء بشكل أساسي في هذه المرحلة ، ويمكنك البدء في استخدامه أدناه!
3. استخدم mybatis-plus
أولاً ، نقوم بتنفيذ الرمز المولد () أعلاه وإنشاء الكود التالي لنا بناءً على بنية الجدول (تم نقل XML إلى ما يلي يدويًا). لقد ورثت الخدمة والخائط الفئة الأساسية وتغليف العديد من الطرق بالنسبة لنا. دعونا نرى بعض الأمثلة البسيطة أدناه.
/** * <p> * وحدة تحكم الواجهة الأمامية * </p> * * Author Yin Tianwen * since 2018-05-31 */ @controller @requestmapping ("/cable") الفئة العامة cablecontroller {autowired cableservice cableservice ؛ /*** قائمة اختبار الاستعلام**/ @REQUESTMAPP ("/1") recponsebody كائن public test1 () {// إنشاء كائن entitywrapper المقابل للكيان والمرشح والاستعلام entitywrapper <bable> ew = entitywrapper <> () ؛ ew.where ("type = {0}" ، 1) .like ("name" ، "king"). و ("core_number = {0}" ، 24). و ("is_delete = 0") ؛ قائمة <bable> list = cableservice.selectlist (EW) ؛ قائمة <map <string ، object >> maps = cableservice.selectMaps (ew) ؛ system.out.println (list) ؛ system.out.println (خرائط) ؛ العودة "موافق" ؛ }/*** اختبار استعلام الصفحات*/ @REQUESTMAPP ("/2") @Responsebody الكائن العام test2 () {// إنشاء كائن intitywrapper المقابل للكيان وأداء تصفية Query entityWrapper <bable> ew = new entityWrapper <> () ؛ ew.where ("type = {0}" ، 1) //. like ("name" ، "king"). و ("core_number = {0}" ، 24). و ("is_delete = 0") ؛ الصفحة <bable> page = صفحة جديدة <> (1،10) ؛ صفحة <bable> pagerst = cableservice.selectpage (صفحة ، EW) ؛ عودة باجيرست }/*** حقل الاستعلام المخصص*/ @requestmapping ("/3") reResponseBody الكائن العام test3 () {Object vl = null ؛ . ew.setsqlselect ("id ،` name` ، " +" نوع الحالة/n " +" عندما يكون 1 '220kV'/n " +" end typename "). where (" type = {0} "، 1) //. الصفحة <> (1،10) ؛ صفحة <bable> pagerst = cableservice.selectpage (صفحة ، EW) ؛ عودة باجيرست }/** * insert */ @requestmapping ("/4") responsebody كائن عام test4 () {cable c = new cable () ؛ C.SetName ("اختبار الكبل البصري") ؛ cableservice.insert (c) ؛ العودة "موافق" ؛ }/** * update */ @requestMapping ("/5") @responsebody test 5 () {cable c = cableservice.selectbyid (22284l) ؛ C.SetName ("اختبار الكبل البصري 2222") ؛ C.SetType (1) ؛ cableservice.updateByid (c) ؛ العودة "موافق" ؛ }}ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.