Операционная база данных Mybatis - примечания к началу исследования Spring 11

Содержание курса взято из игры компьютерных фанатов Spring Family Bucket, ссылка следующая
https://time.geekbang.org/course/intro/100023501

Шестой день 1/4

Управляйте базой данных через Mybatis

Mybatis

Mybatis также является отличным фреймворком уровня сохраняемости. Предшественник - iBatis. Самая
большая разница между Mybatis и JPA заключается в том, что необходимо писать SQL (генерация с помощью инструментов)

Применимая ситуация

Работа всей базы данных относительно проста для использования JPA,
потому что ему не нужно заботиться о SQL и сопоставлениях связанных вещей.

Если у администратора базы данных есть требования к контролю для SQL и сопоставления, например, каждый SQL должен быть подвергнут аудиту, добавлены некоторые подсказки
или SQL более сложен и есть сложные ассоциации, такие как объединения,
вам нужно выбрать Mybatis

Крупные фабрики обычно выбирают Mybatis

Используйте Mybatis весной

Пружинный адаптер Mybatis 以及 Mybatis-spring-boot-starter

Конфигурация в файле application.properties

  • mybatis.mapper-locations = путь к классам *: mapper / ** / *. xml
  • mybatis.type-aliases-package = имя пакета псевдонима типа
  • mybatis.type-handlers-package = TypeHandler имя пакета сканирования
  • mybatis.configuration.map-underscore-to-camel-case = true

@MapperScan Настройте место сканирования
@Mapper Определите интерфейс
Mapping definition-XML и аннотации (два способа определения сопоставления, поддержка смешанных)

Код и результаты выполнения

CoffeeMapper

package geektime.spring.data.mybatisdemo.mapper;

import geektime.spring.data.mybatisdemo.model.Coffee;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;

@Mapper
public interface CoffeeMapper {
    
    
    @Insert("insert into t_coffee (name, price, create_time, update_time)"
            + "values (#{name}, #{price}, now(), now())")
    @Options(useGeneratedKeys = true)
    int save(Coffee coffee);

    @Select("select * from t_coffee where id = #{id}")
    @Results({
    
    
            @Result(id = true, column = "id", property = "id"),
            @Result(column = "create_time", property = "createTime"),
            // map-underscore-to-camel-case = true 可以实现一样的效果
            // @Result(column = "update_time", property = "updateTime"),
    })
    Coffee findById(@Param("id") Long id);
}

MybatisDemoApplication

package geektime.spring.data.mybatisdemo;

import geektime.spring.data.mybatisdemo.mapper.CoffeeMapper;
import geektime.spring.data.mybatisdemo.model.Coffee;
import lombok.extern.slf4j.Slf4j;
import org.joda.money.CurrencyUnit;
import org.joda.money.Money;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@Slf4j
@MapperScan("geektime.spring.data.mybatisdemo.mapper")
public class MybatisDemoApplication implements ApplicationRunner {
    
    
	@Autowired
	private CoffeeMapper coffeeMapper;

	public static void main(String[] args) {
    
    
		SpringApplication.run(MybatisDemoApplication.class, args);
	}

	@Override
	public void run(ApplicationArguments args) throws Exception {
    
    
		Coffee c = Coffee.builder().name("espresso")
				.price(Money.of(CurrencyUnit.of("CNY"), 20.0)).build();
		int count = coffeeMapper.save(c);
		log.info("Save {} Coffee: {}", count, c);

		c = Coffee.builder().name("latte")
				.price(Money.of(CurrencyUnit.of("CNY"), 25.0)).build();
		count = coffeeMapper.save(c);
		log.info("Save {} Coffee: {}", count, c);

		c = coffeeMapper.findById(c.getId());
		log.info("Find Coffee: {}", c);
	}
}

Выполнить вывод:
Вставьте описание изображения сюда

рекомендация

отblog.csdn.net/weixin_43596589/article/details/112568903