Java >> Java tutorial >  >> Tag >> mybatis

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 indeholder EmployeeMapper.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 i EmployeeMapper.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). Hent mybatis.conf.xml fil som et Reader-objekt ved hjælp af getResourceAsReader(java.lang.String resource) API-metode af org.apache.ibatis.io.Resources .
  • Opret en ny org.apache.ibatis.session.SqlSessionFactoryBuilder og brug dens build(Reader reader) API-metode til at oprette en org.apache.ibatis.session.SqlSessionFactory , og med dens openSession() API-metode åbner en ny org.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.

enterprise java mybatis
Java tag