Вопрос довольно простой. Я хочу сделать базовый вызов SELECT * FROm для моей базы данных MySQL, используя вышеупомянутые инструменты.
Я буду использовать картограф в стиле XML MyBatis config
Пока что я успешен при использовании строковых операторов
@RestController
@RequestMapping("/")
public class ApplicationRestController {
Actor actor;
//this works easily because no connections to SQL are being made.
@GetMapping("/hello")
public String hello() {
return "HELO WORLD";
}
}
Но что, если я хочу получить данные из моей базы данных? Как это сделать? Нужен ли мне SqlSession?
У кого-нибудь есть полезная ссылка?
ЭТО МОЯ ОБНОВЛЕННАЯ ОШИБКА:
Ошибка создания бина с именем applicationRestController: неудовлетворен
зависимость выражается через поле 'actorMapper'; вложенное исключение
org.springframework.beans.factory.UnsatisfiedDependencyException:
Ошибка создания бина с именем 'actorMapper', определенного в файле
[/Users/helios/Documents/workspace-sts-3.9.8.RELEASE/mybatis-sakila/target/classes/com/helios/mybatissakila/mappers/ActorMapper.class]:
Неудовлетворенная зависимость выражается через свойство бина
'SqlSessionFactory'; вложенное исключение
org.springframework.beans.factory.BeanCreationException: ошибка
создание бина с именем sqlSessionFactory, определенного в пути к классу
ресурс
[Орг / mybatis / весна / загрузки / Автоконфигурирование / MybatisAutoConfiguration.class]:
Не удалось создать экземпляр объекта с помощью фабричного метода; вложенное исключение
org.springframework.beans.BeanInstantiationException: не удалось
instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory
метод sqlSessionFactory вызвал исключение; вложенное исключение
org.springframework.core.NestedIOException: не удалось проанализировать сопоставление
ресурс: ресурс класса путь
[Mybatis-Sakila / SRC / основной / ресурсы / mybatis-картостроитель / ActorMapper.xml] ';
вложенное исключение
java.io.FileNotFoundException: ресурс пути к классу
[Mybatis-Sakila / SRC / основной / ресурсы / mybatis-картостроитель / ActorMapper.xml]
не может быть открыт, потому что он не существует
Это мои соответствующие файлы:
Actor.java
public class Actor {
private static final long serialVersionUID = 1L;
private int actor_id;
private String first_name;
private String last_name;
private Date last_update;
public int getActor_id() {
return actor_id;
}
public void setActor_id(int actor_id) {
this.actor_id = actor_id;
}
public String getFirst_name() {
return first_name;
}
public void setFirst_name(String first_name) {
this.first_name = first_name;
}
public String getLast_name() {
return last_name;
}
public void setLast_name(String last_name) {
this.last_name = last_name;
}
public Date getLast_update() {
return last_update;
}
public void setLast_update(Date last_update) {
this.last_update = last_update;
}
}
ActorMapper.java
import org.apache.ibatis.annotations.Mapper;
import org.springframework.beans.factory.annotation.Autowired;
import com.helios.mybatissakila.model.Actor;
@Mapper
public interface ActorMapper {
List <Actor> selectAllActors();
}
ApplicationRestController.java
@RestController
@RequestMapping("/")
public class ApplicationRestController {
@Autowired
ActorMapper actorMapper;
//working as not connected to mysql
@GetMapping("/hello")
public String hello() {
return "MyBatis + SpringBoot + MySQL!";
}
//error
@GetMapping("/actors")
public List<Actor> selectAllActors(){
return actorMapper.selectAllActors();
}
}
ActorMapper.xml
<resultMap id="ActorResultMap" type="Actor">
<id column="actor_id" property="actor_id" jdbcType="INTEGER"/>
<result column="first_name" property="first_name" />
<result column="last_name" property="last_name" />
<result column="last_update" property="last_update" />
</resultMap>
<select id="selectAllActors" resultMap="ActorResultMap">
select * from actor
</select>
application.properties
server.port = 9090
spring.datasource.url= jdbc:mysql://localhost:3306/sakila
spring.datasource.username = root
spring.datasource.password = password
spring.datasource.dbcp2.test-while-idle= true
spring.datasource.dbcp2.validation-query= select 1
#mybatis entity scan packages
mybatis.type-aliases-package=com.helios.mybatissakila.model
#Mapper.xml location
mybatis.mapper-locations=classpath*:mybatis-sakila/src/main/resources/ActorMapper.xml
mybatis.typeAliasesPackage=com.helios.mybatissakila.model.Actor
logging.level.root=WARN
logging.level.sample.mybatis.mapper=TRACE
У меня есть подозрение, что это неправильно, вы также можете помочь мне исправить это? Является ли " classpath " просто эталонным кодом, который следует заменить на реальное значение?
mybatis.mapper-locations=classpath*:mybatis-sakila/src/main/resources/ActorMapper.xml
Примечание : мне удалось выполнить вызовы REST API с использованием стиля @Annotation, но я хочу использовать стиль XML.