当前位置: 首页 > 知识库问答 >
问题:

如何使用带有springboot-mybatis-mysql的RESTFUL API对我的MySQL数据库进行基本的SELECT FROM调用?

劳和雅
2023-03-14

到目前为止,我成功地使用了字符串语句

@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?

有人有有用的链接吗?

java.io.FileNotFoundException:无法打开类路径资源[mybatis-sakila/src/main/resources/mybatis-mapper/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;
    }
}
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>

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
mybatis.mapper-locations=classpath*:mybatis-sakila/src/main/resources/ActorMapper.xml

注意:我已经设法使用@Annotation样式执行了REST API调用,但我想使用XML样式。

共有1个答案

白浩气
2023-03-14

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

简单地说,您需要做到以下几点:

创建POJO:

public class Dog{
   private Long id;
   private String name;

  //Getters and Setters
}
public interface DogMapper{
   public void insert(Dog dog);
}
@Service
public class DogService{
   @Autowired
   private DogMapper dogMapper;

   public void insert(Dog dog){
       dogMapper.insert(dog);
   }
}
 类似资料:
  • 如何使用MySQL Workbench进行数据库备份?我们可以用以下方式备份吗- < li >备份文件(。sql)包含Create Table语句和Insert into Table语句 < li >备份文件(。sql)只包含Create Table语句,不包含针对所有表的Insert into Table语句 < li >备份文件(。sql)只包含Insert into Table语句,不包含针

  • 本文向大家介绍MySQL对数据库数据进行复制的基本过程详解,包括了MySQL对数据库数据进行复制的基本过程详解的使用技巧和注意事项,需要的朋友参考一下 复制      复制是从一个MySQL服务器(master)将数据拷贝到另外一台或多台MySQL服务器(slaves)的过程.复制是异步进行的--slaves服务器不需要持续地保持连接来接收master的数据.依据配置的不同,可以复制所有数据库,或

  • 我想从Dockerfile创建一个具有初始数据库及其表的MySQL容器。 我还有一个特定的etc/mysql/mysql。conf.d/mysqld。cnf文件(我可以在Dockerfile中简单地使用添加指令。) 我希望Dockerfile创建一个MySQL映像,其中包含一个名为DBNAME的数据库,并包含以下表格: 我已经在这里寻找解决问题的方法,但没有找到解决方法。

  • 问题内容: 我找到了一个很好的ajax / jquery无限滚动插件(http://hycus.com/2011/03/15/infinite-scrolling- like-new-twitter-with-php-mysql-jquery/ )对我的内容来说很好,但是我遇到一个问题- 它只调用一次loadmore.php脚本。让我显示代码: 在我的index.php文件中: 本节将调用我的lo

  • 本文向大家介绍基于Docker的PHP调用基于Docker的Mysql数据库,包括了基于Docker的PHP调用基于Docker的Mysql数据库的使用技巧和注意事项,需要的朋友参考一下 docker简介: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不

  • 问题内容: 我已经安装了 Python 3.4.0 版, 并且希望使用MySQL数据库进行项目。我下载并尝试安装 MySQLdb ,但对于此版本的Python而言并不成功。有什么建议可以解决此问题并正确安装吗? 问题答案: MySQLdb不支持Python 3,但它不是唯一的Python MySQL驱动程序。 mysqlclient本质上是MySQLdb的一个分支,其中合并了Python 3支持(