spring+mybatis实现图书管理系统

以下是“spring+mybatis实现图书管理系统”的完整攻略。

1. 环境准备

首先需要准备好开发环境,包括以下工具和框架:

  • JDK(Java Development Kit): 用于编译和运行Java程序的开发工具包。
  • Eclipse(或其他Java开发工具):用于编写和调试Java代码的集成开发环境(IDE)。
  • Maven:Java项目的构建工具,用于管理项目依赖。
  • Spring Framework:Java企业级应用开发框架,提供了依赖注入、AOP等功能。
  • MyBatis:Java对象关系映射(ORM)框架,用于简化Java应用程序与关系数据库之间的交互。

2. 创建项目

使用Eclipse创建一个新的Maven项目,并配置相关依赖。在pom.xml中加入以下代码:

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.0.7.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.4.6</version>
    </dependency>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>2.0.2</version>
    </dependency>
</dependencies>

3. 创建数据库表

在MySQL数据库中创建一个名为“book”的数据库,并在该数据库中创建一个名为“book_info”的表,用于存储图书信息,表结构如下:

CREATE TABLE book_info (
    id INT(11) NOT NULL AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL DEFAULT '',
    author VARCHAR(50) NOT NULL DEFAULT '',
    price FLOAT NOT NULL DEFAULT 0,
    PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

4. 编写实体类

在Java项目中创建一个名为“com.example.entity”的包,并在该包中创建一个名为“Book”的类,用于映射数据库表“book_info”。

public class Book {
    private int id;
    private String name;
    private String author;
    private float price;

    // getter和setter方法
}

5. 编写Mapper接口

在Java项目中创建一个名为“com.example.mapper”的包,并在该包中创建一个名为“BookMapper”的接口,用于定义访问“book_info”表的数据操作方法。

public interface BookMapper {
    public List<Book> findAll();
    public Book findById(int id);
    public void insert(Book book);
    public void update(Book book);
    public void delete(int id);
}

6. 编写Mapper XML文件

在Java项目中创建一个名为“com.example.mapper”的包,并在该包中创建一个名为“BookMapper.xml”的文件,用于实现Mapper接口中定义的数据操作方法。

<mapper namespace="com.example.mapper.BookMapper">
    <select id="findAll" resultType="com.example.entity.Book">
        SELECT * FROM book_info
    </select>
    <select id="findById" parameterType="int" resultType="com.example.entity.Book">
        SELECT * FROM book_info WHERE id = #{id}
    </select>
    <insert id="insert" parameterType="com.example.entity.Book">
        INSERT INTO book_info(name, author, price)
        VALUES(#{name}, #{author}, #{price})
    </insert>
    <update id="update" parameterType="com.example.entity.Book">
        UPDATE book_info SET name=#{name},
        author=#{author},price=#{price}
        WHERE id = #{id}
    </update>
    <delete id="delete" parameterType="int">
        DELETE FROM book_info WHERE id = #{id}
    </delete>
</mapper>

7. 配置Spring

在Java项目中创建一个名为“com.example.config”的包,并在该包中创建一个名为“SpringConfig”的类,用于配置Spring框架相关参数。

@Configuration
@MapperScan("com.example.mapper") // 扫描Mapper接口文件
public class SpringConfig {

    @Bean
    public DataSource dataSource(){
        // 配置数据源相关参数
        BasicDataSource dataSource = new BasicDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/book?useSSL=false");
        dataSource.setUsername("root");
        dataSource.setPassword("123456");
        return dataSource;
    }

    @Bean
    public SqlSessionFactory sqlSessionFactory() throws Exception {
        SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dataSource());
        sessionFactory.setTypeAliasesPackage("com.example.entity");
        Resource resource = new PathMatchingResourcePatternResolver().getResource("classpath:com/example/mapper/BookMapper.xml");
        sessionFactory.setMapperLocations(new Resource[] { resource });
        return sessionFactory.getObject();
    }

    @Bean
    public SqlSessionTemplate sqlSessionTemplate() throws Exception {
        SqlSessionTemplate template = new SqlSessionTemplate(sqlSessionFactory());
        return template;
    }
}

8. 编写Controller

在Java项目中创建一个名为“com.example.controller”的包,并在该包中创建一个名为“BookController”的类,用于处理前端请求。

@RestController
@RequestMapping("/book")
public class BookController {

    @Autowired
    private BookMapper bookMapper;

    @GetMapping("/all")
    public List<Book> findAll() {
        return bookMapper.findAll();
    }

    @GetMapping("/{id}")
    public Book findById(@PathVariable int id) {
        return bookMapper.findById(id);
    }

    @PostMapping("")
    public String insert(@RequestBody Book book) {
        bookMapper.insert(book);
        return "success";
    }

    @PutMapping("")
    public String update(@RequestBody Book book) {
        bookMapper.update(book);
        return "success";
    }

    @DeleteMapping("/{id}")
    public String delete(@PathVariable int id) {
        bookMapper.delete(id);
        return "success";
    }
}

9. 测试

使用浏览器或Postman等工具发送HTTP请求,即可进行增删改查等操作。

示例1:查询所有图书信息

请求URL: http://localhost:8080/book/all

响应结果:

[
    {
        "id":1,
        "name":"Java编程思想",
        "author":"Bruce Eckel",
        "price":98.5
    },
    {
        "id":2,
        "name":"深入浅出MySQL",
        "author":"周志明",
        "price":58.9
    }
]

示例2:根据ID查询图书信息

请求URL: http://localhost:8080/book/1

响应结果:

{
    "id":1,
    "name":"Java编程思想",
    "author":"Bruce Eckel",
    "price":98.5
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:spring+mybatis实现图书管理系统 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • spring框架_Applicationcontext功能

    Applicationcontext的功能拓展主要来自于不属于beanfactory的接口,主要包括四个接口 Messagesource :国际化 ResourcePatternResolver :获取资源 ApplicationEventPublisher:发布事件 EnvironmentCapable:获取环境变量 感觉发布事件这个功能有点像消息队列,发…

    Java 2023年5月9日
    00
  • 浅析Java自定义注解的用法

    接下来我会详细讲解“浅析Java自定义注解的用法”的完整攻略。 什么是Java自定义注解 Java自定义注解相对于内置的注解,可以根据开发人员的需要添加自己想要的注解。Java自定义注解其实是一种元注解,它可以用来标记代码或方法的各种属性。 Java的注解是在Java SE5中新增的特性,它可以用来填写源代码的元数据,在编译、加载、运行时被其他程序利用。 如…

    Java 2023年5月26日
    00
  • 【9种】ElasticSearch分词器详解,一文get!!!| 博学谷狂野架构师

    ElasticSearch 分词器 作者: 博学谷狂野架构师 GitHub:GitHub地址 (有我精心准备的130本电子书PDF) 只分享干货、不吹水,让我们一起加油!? 概述 分词器的主要作用将用户输入的一段文本,按照一定逻辑,分析成多个词语的一种工具 什么是分词器 顾名思义,文本分析就是把全文本转换成一系列单词(term/token)的过程,也叫分词。…

    Java 2023年5月8日
    00
  • Java集合-HashMap

    Java集合-HashMap HashMap是Java集合框架中最常用的数据结构之一,它基于哈希表实现,在插入、删除、查找等操作上具有很高效的表现。本文将详细讲解HashMap的使用方法和具体实现。 HashMap的特点 HashMap是一种无序的数据结构,它存储的键值对是没有顺序的。 它允许一条记录的键和值来自不同的映射表,例如,键可以是String类型,…

    Java 2023年5月26日
    00
  • 详解Java线程的创建及休眠

    详解Java线程的创建及休眠 线程的概念 Java 线程是一条执行路径,每个线程都是独立的,它们之间不会相互影响,每个线程有自己的计数器、栈和程序计数器。线程是轻量级的,因为创建和销毁线程所需的时间和资源相对较少。 Java线程的创建 Java 线程是通过 Thread 类来实现的。创建线程的方式有两种,分别是: 继承 Thread 类 public cla…

    Java 2023年5月19日
    00
  • 详解springmvc 接收json对象的两种方式

    详解SpringMVC接收JSON对象的两种方式 在SpringMVC中,接收JSON对象是非常常见的操作。本文将详细讲解SpringMVC接收JSON对象的两种方式,并提供两个示例说明。 方式一:使用@RequestBody注解 使用@RequestBody注解是SpringMVC接收JSON对象的一种常见方式。下面是实现步骤: 步骤一:创建Maven项目…

    Java 2023年5月17日
    00
  • 网站降权了怎么办?网站降权后的挽救方法

    网站降权是指由于某些原因,网站在搜索引擎中的排名出现大幅下降的现象,可能会导致网站流量大幅减少,影响网站的收益和影响力。以下是网站降权后的挽救方法的完整攻略: 一、查找问题并进行排查 1. 确认是否为降权 首先要确定网站是否真的发生了降权,可以通过输入网站关键词检索排名,或者查询搜索引擎控制台的行为报告,如果排名确实下降了,那么就可以确定降权了。 2. 分析…

    Java 2023年5月23日
    00
  • C#动态创建Access数据库及表的方法

    C#动态创建Access数据库及表的方法 Access数据库是Microsoft Office Suite的一部分,常用于小型应用程序和数据管理。在C#应用程序中创建和管理Access数据库和表非常简单,只需要几个简单的代码行。 步骤一:引入依赖 在开始创建Access数据库和表之前,需要添加相应的依赖项。在项目中添加:- Microsoft.Office.…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部