以下是“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技术站