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 Data JPA系列JpaSpecificationExecutor用法详解

    Spring Data JPA系列JpaSpecificationExecutor用法详解 JpaSpecificationExecutor介绍 JpaSpecificationExecutor是Spring Data JPA提供的一个接口,可以用于对JPA规范中Criteria Query查询标准的扩展,使得我们可以根据不同的查询条件,动态生成不同的查询语…

    Java 2023年5月20日
    00
  • java与javascript之间json格式数据互转介绍

    首先,JSON是一种轻量级的数据交换格式。Java和JavaScript都支持对JSON格式数据进行互转。Java通过Jackson库提供了对JSON的解析和序列化的支持,而JavaScript通过JSON对象的parse()方法和JSON.stringify()方法实现。 下面是Java将JSON转换为对象的示例: ObjectMapper mapper …

    Java 2023年5月26日
    00
  • java中复杂查询sql语句该怎么写

    讲解如下。 如何在Java中编写复杂查询SQL语句 在Java中编写复杂查询SQL语句通常有两种方式,分别是使用字符串拼接和使用JPA Criteria Query API。下面将对这两种方法进行详细介绍。 字符串拼接 使用字符串拼接方式,我们可以直接写出SQL语句并将其作为一个字符串传递给JDBC,然后通过执行该语句返回结果集。这种方式的优点是简单易懂,可…

    Java 2023年5月20日
    00
  • SpringBoot 集成短信和邮件的配置示例详解

    下面我将详细讲解“SpringBoot 集成短信和邮件的配置示例详解”的完整攻略。 1. 集成短信 1.1. 添加依赖 在 pom.xml 中添加阿里云短信 SDK 的依赖: <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-s…

    Java 2023年5月20日
    00
  • 使用IDEA配置tomcat及创建JSP文件的方法

    下面是详细的步骤以及示例说明。 配置Tomcat 下载Tomcat:首先需要从官网下载Tomcat的压缩包,选择对应的版本并下载。 解压Tomcat:下载完成后,解压压缩包至一个合适的目录下,比如 /usr/local/tomcat。 配置Tomcat的环境变量:在终端中输入以下命令来进行环境变量的配置。 shell export CATALINA_HOME…

    Java 2023年6月15日
    00
  • 实例详解angularjs和ajax的结合使用

    当我们在开发前端网站时,经常需要使用异步请求获取数据来更新网站的内容。同时,随着前端框架的不断发展,AngularJS成为了一款非常流行的前端框架之一。本文将深入探讨AngularJS和AJAX的结合使用,为读者提供使用AngularJS和AJAX来实现异步请求的具体方案。 AngularJS和AJAX AngularJS是由Google开发的一款前端MVC…

    Java 2023年5月19日
    00
  • Ajax通过XML异步提交的方法实现从数据库获取省份和城市信息实现二级联动(xml方法)

    创建数据库和数据表 首先,需要先创建一个数据库,可以取名为demo,然后在这个数据库中创建一张名为province的数据表,并插入一些数据。表结构如下: CREATE TABLE IF NOT EXISTS `province` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT ‘省份ID’, `…

    Java 2023年6月15日
    00
  • JAVA字符串反转的三种方法

    下面是“JAVA字符串反转的三种方法”的完整攻略: 方法一:使用StringBuilder或StringBuffer的reverse()方法 我们可以使用StringBuilder或StringBuffer类的reverse()方法来反转字符串。这两个类都提供了一种修改字符串的方法,可以在原字符串的基础上直接进行修改,从而减少了额外的内存消耗。 以下是使用S…

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