A stored procedure is a specialized form of a statement. See section 3. If the case is simple, the Mapped Statement can reference the parameter and result classes directly. Mapped Statements support caching through reference to a Cache Model element. The following example shows the syntax for a statement element.
|Published (Last):||27 August 2018|
|PDF File Size:||15.4 Mb|
|ePub File Size:||6.40 Mb|
|Price:||Free* [*Free Regsitration Required]|
A stored procedure is a specialized form of a statement. See section 3. If the case is simple, the Mapped Statement can reference the parameter and result classes directly. Mapped Statements support caching through reference to a Cache Model element.
The following example shows the syntax for a statement element. In Example 3. It is perfectly legal to have a Mapped Statement as simple as shown by Example 3. Example 3. More likely, you will use the object mapping features with Parameter Maps Section 3. Generally it is a good idea to use one of the more specific statement-type elements.
The more specific elements provided better error-checking and even more functionality. For example, the insert statement can return a database-generated key. Table 3. The various attributes used by statement-type elements are covered in Section 3. The idea behind Example 3. The parameter object is only modified if the parameter mappings mode attribute is set to InputOutput or Output. Otherwise they are left unchanged. Of course, immutable parameter objects e. String cannot be modified.
NET, the parameterMap attribute is required. The DBType, parameter direction, size, precision, and scale are usually auto-discovered by the framework via the CommandBuilder depending on your provider. If your stored procedure have no parmeters, the parameterMap attribute on the procedure tag is optionnal. If you are not using stored procedures, the most important part of a statement-type element is the SQL.
You can use any SQL statement that is valid for your database system. You can use whatever functions your database system supports, and even send multiple statements, so long as your driver or provider supports them. See Section 3. For the sake of simplicity, let's assume we want to get some items and we want to do a count on them.
Normally, you would write something like this :. For example:. The fragments are included and processed on query-execution so parameters can be used too :. In many case, you can also use the extends attribute on statement tag to achieve the same goal. Many database systems support auto-generation of primary key fields, as a vendor extension. Some vendors pre-generate keys e.
Oracle , some vendors post-generate keys e. When the requirements for a statement are simple and obvious, you may not even need to write a SQL statement at all. The four CRUD statement types insert, select, update, and delete are supported. For a select, you can select all or select by a key or keys. The SQL is generated when the DataMapper instance is built, so there is no performance impact at execution time. Special types, such as blobs, are not supported, and vendor-specific types are also not supported.
But, the generate tag does keep the simple things simple. It is not meant as a object-to-relational mapping tool. There are many frameworks that provide extensive object-to-relational mapping features. The six statement-type elements take various attributes. The individual attributes are described in the sections that follow. A Parameter Map defines an ordered list of values that match up with the "? The first "? The second is replaced with the description property.
However, Parameter Maps are useful when the SQL must be kept in a standard form or when extra information needs to be provided. For more about Parameter Maps see Section 3. If a parameterMap attribute is not specified, you may specify a parameterClass instead and use inline parameters see Section 3.
The value of the parameterClass attribute can be a Type Alias or the fully qualified name of a class. A Result Map lets you control how data is extracted from the result of a query, and how the columns are mapped to object properties. If you want all the columns, you don't need to map them all individually. Though many developers consider it a good practice to always specify the columns expected.
If a resultMap is not specified, you may specify a resultClass instead. The value of the resultClass attribute can be a Type Alias or the fully qualified name of a class.
The class specified will be automatically mapped to the columns in the result, based on the result metadata. Each of these corresponds with the column aliases described by the SQL select statement using the " as " keyword —a standard SQL feature. When executed, a Person object is instantiated and populated by matching the object property names to the aliased column names from the query.
There is no way to specify the types of the output columns if needed , there is no way to automatically load related data such as complex properties, and there is a slight performance consequence from accessing the result metadata. Architecturally, using aliases this way mixes database logic with reporting logic , making the query harder to read and maintain.
You can overcome these limitations with an explicit Result Map Section 3. In addition to providing the ability to return an IList of objects, the DataMapper supports the use of a strongly-typed custom collection: a class that implements the System.
CollectionBase abstract class. The following is an example of a CollectionBase class that can be used with the DataMapper. A CollectionBase class can be specified for a select statement through the listClass attribute. The value of the listClass attribute can be a Type Alias or the fully qualified name of a class.
The statement should also indicate the resultClass so that the DataMapper knows how to handle the type of objects in the collection. The resultClass specified will be automatically mapped to the columns in the result, based on the result metadata. For more about Cache Models, see Section 3. When writing Sql, you often encounter duplicate fragments of SQL.
Mapped Statements. Statement Types. Stored Procedures. Note For. The SQL. Reusing SQL Fragments. Note In many case, you can also use the extends attribute on statement tag to achieve the same goal. Escaping XML symbols. Auto-Generated Keys.
NET 1. Statement-type Element Attributes. Product, Examples. Tip In Example 3. A System. CollectionBase implementation using System; using System.
Collections; namespace WebShop. What's in a Data Map definition file, anyway? Parameter Maps and Inline Parameters.
iBATIS - Quick Guide
MyBatis is an open source, lightweight, persistence framework. It automates the mapping between SQL databases and objects in Java,. NET, and Ruby on Rails. It abstracts almost all of the JDBC code, and reduces the burden of setting of parameters manually and retrieving the results.