首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用的RESTFUL对我的MySQL数据库进行基本的选择?

如何使用的RESTFUL对我的MySQL数据库进行基本的选择?
EN

Stack Overflow用户
提问于 2019-05-20 11:00:03
回答 2查看 797关注 0票数 0

问题很简单。我想使用上面提到的工具对我的MySQL数据库进行基本的SELECT *MySQL调用。我将使用XML样式的映射器MyBatis配置。

到目前为止,当使用string语句时,Im成功

代码语言:javascript
复制
@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”的bean错误:通过字段'actorMapper‘表示的不满意的依赖关系;嵌套的异常是org.springframework.beans.factory.UnsatisfiedDependencyException:错误创建名为’actorMapper‘的bean,其名称为’actorMapper‘,通过bean属性’sqlSessionFactory‘表示的不满意依赖;嵌套异常是通过工厂方法创建名为“org.springframework.beans.factory.BeanCreationException:”的类路径资源org/mybatis/spring/boot/autoconfigure/MybatisAutoConfiguration.class: bean实例化的org/mybatis/spring/boot/autoconfigure/MybatisAutoConfiguration.class:错误;嵌套异常是org.springframework.beans.BeanInstantiationException:未能实例化org.apache.ibatis.session.SqlSessionFactory: sqlSessionFactory方法'sqlSessionFactory‘抛出的异常;嵌套异常是org.springframework.core.NestedIOException:未能解析映射资源:类路径资源mybatis-sakila/src/main/resources/mybatis-mapper/ActorMapper.xml';嵌套异常是 mybatis-sakila/src/main/resources/mybatis-mapper/ActorMapper.xml :无法打开类路径资源java.io.FileNotFoundException,因为它不存在

以下是我的相关档案:

Actor.java

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
@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

代码语言:javascript
复制
<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

代码语言:javascript
复制
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

我知道这是不对的,你能帮我把它修好吗?“类路径”仅仅是一个样板代码,应该用一个实际值来替换吗?

代码语言:javascript
复制
mybatis.mapper-locations=classpath*:mybatis-sakila/src/main/resources/ActorMapper.xml

备注:我已经成功地使用@Annotation风格执行REST调用,但我希望使用XML。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-21 06:20:07

好吧,我就是这样修好的:

正如我确实怀疑的那样,类路径是完成这项工作的一个主要因素。一旦在application.properties中提供了正确的路径

代码语言:javascript
复制
mybatis.mapper-locations=classpath:/mybatis-mapper/ActorMapper.xml

我能够从MySQL发出选择电话。这难道不是很有趣吗?

票数 1
EN

Stack Overflow用户

发布于 2019-05-20 17:53:07

您不需要SqlSession,MyBatis使用它自己的实现,您只需要创建MyBatis配置并设置它的所有依赖项。

简单地说,您需要做以下工作:

创建您的POJO:

代码语言:javascript
复制
public class Dog{
   private Long id;
   private String name;

  //Getters and Setters
}

然后,您需要在java中创建MyBatis映射器接口:

代码语言:javascript
复制
public interface DogMapper{
   public void insert(Dog dog);
}

然后是DogMapper.xml,您可以将查询放在这里。

最后,您可以将查询调用为:

代码语言:javascript
复制
@Service
public class DogService{
   @Autowired
   private DogMapper dogMapper;

   public void insert(Dog dog){
       dogMapper.insert(dog);
   }
}

在MyBatis中,这是一种过于简化的工作方式,不过,我建议您看看一些MyBatis CRUD示例。将有详细的描述,如何使事情完成,并进一步非常重要的配置。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56219561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档