No, it&#x27;s essentially a way to automatically map between manually written SQL and custom object types; you can use MyBatis with annotations only; no XML required.<p>The advantage is that, as you&#x27;re writing and embedding actual SQL, you can take advantage of any database-vendor-specific extensions to SQL, plus you can easily run, debug and test such SQL from another tool. Having full control over the actual SQL also means you don&#x27;t risk potentially horribly inefficiently generated SQL, or risk running into unexpected N+1 scenarios. At the same time, you don&#x27;t have to deal with JDBC and instead get a DAO layer that uses strongly typed objects.<p>Of course the disadvantage is that you lose portability; moving for instance a MyBatis&#x2F;SqlServer app to Oracle will mean verifying, testing and potentially rewriting every single SQL statement in your app. If you&#x27;re willing to accept that risk though, MyBatis is a great lightweight library to manage your database access layer.