Sådan bruges @Select MyBatis-annotation
I dette eksempel skal vi vise dig, hvordan du bruger @Select
MyBatis-anmærkning. MyBatis er en førsteklasses persistensramme med understøttelse af tilpasset SQL, lagrede procedurer og avancerede kortlægninger. Det kan bruge simpel XML eller annoteringer til konfiguration og kortlægge primitiver, kortgrænseflader og Java POJO'er (Plain Old Java Objects) til databaseposter. For at bruge den simple @Select
anmærkning for at foretage et simpelt valg kan du følge trinene nedenfor som beskrevet i eksemplet:
- Opret en klasse,
Employee.java
med variabler og deres gettere og sættere, som vist nedenfor:
package com.javacodegeeks.snippets.enterprise; import java.util.Date; public class Employee { private Long id; private String name; private String surname; private String title; private Date created; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSurname() { return surname; } public void setSurname(String surname) { this.surname = surname; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public Date getCreated() { return created; } public void setCreated(Date created) { this.created = created; } }
- Opret kortlægningsgrænsefladen,
EmployeeMapper.java
der har en metode,Employee findById(long id)
. I denne metode er@Select("SELECT * FROM employee WHERE id = #{id}")
annotation bruges med SQL-udtrykket. Vi bruger også@ResultMap
annotering, så resultatet af udvælgelsen indstilles til den angivne resultatkortlægger.package com.javacodegeeks.snippets.enterprise; import org.apache.ibatis.annotations.ResultMap; import org.apache.ibatis.annotations.Select; public interface EmployeeMapper { @Select("SELECT * FROM employee WHERE id = #{id}") @ResultMap("employeeResultMap") Employee findById(long id); }
- Definer konfigurationsfilen. Her er
mybatis.conf.xml
fil indeholder indstillinger for kernen af MyBatis-systemet, herunder en DataSource til at hente database Connection-instanser, samt en TransactionManager til at bestemme, hvordan transaktioner skal scopes og kontrolleres. Brødteksten af environment
elementet indeholder miljøkonfigurationen til transaktionsstyring og forbindelsespooling.dataSource
element konfigurerer kilden til JDBC Connection-objekter ved hjælp af standard JDBC DataSource-grænsefladen.mappers
elementet indeholderEmployeeMapper.xml
der indeholder kortlægningsdefinitionen.
mybatis.conf.xml<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost/companydb" /> <property name="username" value="jcg" /> <property name="password" value="jcg" /> </dataSource> </environment> </environments> <mappers> <mapper resource="EmployeeMapper.xml" /> </mappers> </configuration>
- Definer kortlæggeren.
EmployeeMapper.java
klasse er defineret iEmployeeMapper.xml.
EmployeeMapper.xml<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.javacodegeeks.snippets.enterprise.EmployeeMapper"> <resultMap id="employeeResultMap" type="com.javacodegeeks.snippets.enterprise.Employee"> <result column="name" property="name"/> <result column="surname" property="surname"/> <result column="title" property="title"/> </resultMap> </mapper>
- Opret en hovedapplikation (
HowUseSelectMyBatisAnnotation
her). Hentmybatis.conf.xml
fil som et Reader-objekt ved hjælp afgetResourceAsReader(java.lang.String resource)
API-metode aforg.apache.ibatis.io.Resources
. - Opret en ny
org.apache.ibatis.session.SqlSessionFactoryBuilder
og brug densbuild(Reader reader)
API-metode til at oprette enorg.apache.ibatis.session.SqlSessionFactory
, og med densopenSession()
API-metode åbner en nyorg.apache.ibatis.session.SqlSession
. - Brug
getMapper(Class<T> type)
API-metode for SqlSession for at fåEmployeeMapper
og påkald dens metode for at få resultatet.package com.javacodegeeks.snippets.enterprise; import java.io.Reader; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class HowUseSelectMyBatisAnnotation { private static final String conf = "mybatis.conf.xml"; public static void main(String[] args) throws Exception { Reader reader = Resources.getResourceAsReader(conf); SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); SqlSessionFactory sessionFactory = builder.build(reader); SqlSession session = sessionFactory.openSession(); long id = 1; EmployeeMapper mapper = session.getMapper(EmployeeMapper.class); Employee employee = mapper.findById(id); System.out.println(employee.getId() + " - " + employee.getName() + " - " + employee.getSurname()); } }
Output:
1 - Jack - Thomson
Dette var et eksempel på, hvordan man bruger @Select
MyBatis-anmærkning i Java.