MyBatis项目的创建和增删查改操作详解
MyBatis是一款优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis是基于JDBC实现的,但是比JDBC的操作更加方便,可以通过接口和XML来操作数据库。本文将详细介绍MyBatis项目的创建以及增删查改操作。
一、MyBatis项目的创建
创建MyBatis项目通常分为以下几个步骤:
-
准备开发环境
在创建MyBatis项目之前,需要确保已经安装了JDK和IDE(如IntelliJ IDEA或Eclipse)。同时,需要准备好数据库和数据库驱动。
-
创建新项目
在IDE中创建一个新的Java项目,并选择Maven作为构建工具。Maven可以帮助我们管理项目的依赖和构建过程。
-
添加MyBatis依赖
在项目的
pom.xml文件中添加MyBatis的依赖。例如:<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.7</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.28</version> </dependency>这里我们添加了MyBatis和MySQL驱动的依赖。
-
配置数据库连接
在项目的
src/main/resources目录下创建mybatis-config.xml文件,并配置数据库连接信息。例如:<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/yourdatabase?useSSL=false&serverTimezone=UTC"/> <property name="username" value="yourusername"/> <property name="password" value="yourpassword"/> </dataSource> </environment> </environments> <mappers> <!-- 这里将添加Mapper XML文件的路径 --> </mappers> </configuration>将
yourdatabase、yourusername和yourpassword替换为实际的数据库名、用户名和密码。 -
创建实体类和Mapper接口
根据数据库表的结构,创建相应的实体类和Mapper接口。实体类用于表示数据库中的一条记录,Mapper接口用于定义数据库操作的方法。
例如,假设我们有一个
user表,结构如下:CREATE TABLE user ( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) NOT NULL, password VARCHAR(50) NOT NULL, email VARCHAR(100) );对应的实体类
User可能如下:public class User { private Integer id; private String username; private String password; private String email; // getters and setters }对应的Mapper接口
UserMapper可能如下:public interface UserMapper { User getUserById(Integer id); List<User> getAllUsers(); void insertUser(User user); void updateUser(User user); void deleteUser(Integer id); } -
编写Mapper XML文件
在
src/main/resources目录下创建与Mapper接口对应的XML文件。例如,UserMapper.xml可能如下:<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.mapper.UserMapper"> <select id="getUserById" parameterType="int" resultType="com.example.entity.User"> SELECT * FROM user WHERE id = #{id} </select> <select id="getAllUsers" resultType="com.example.entity.User"> SELECT * FROM user </select> <insert id="insertUser" parameterType="com.example.entity.User" useGeneratedKeys="true" keyProperty="id"> INSERT INTO user (username, password, email) VALUES (#{username}, #{password}, #{email}) </insert> <update id="updateUser" parameterType="com.example.entity.User"> UPDATE user SET username = #{username}, password = #{password}, email = #{email} WHERE id = #{id} </update> <delete id="deleteUser" parameterType="int"> DELETE FROM user WHERE id = #{id} </delete> </mapper>在
mybatis-config.xml文件的<mappers>标签中引入这个XML文件:<mappers> <mapper resource="com/example/mapper/UserMapper.xml"/> </mappers> -
编写Service和Controller
为了将Mapper接口的方法暴露给外部调用,通常需要编写Service和Controller层。Service层负责业务逻辑的处理,Controller层负责接收外部请求并调用Service层的方法。
例如,
UserService可能如下:@Service public class UserService { @Autowired private UserMapper userMapper; public User getUserById(Integer id) { return userMapper.getUserById(id); } public List<User> getAllUsers() { return userMapper.getAllUsers(); } public void insertUser(User user) { userMapper.insertUser(user); } public void updateUser(User user) { userMapper.updateUser(user); } public void deleteUser(Integer id) { userMapper.deleteUser(id); } }UserController可能如下:@RestController @RequestMapping("/users") public class UserController { @Autowired private UserService userService; @GetMapping("/{id}") public ResponseEntity<User> getUserById(@PathVariable Integer id) { User user = userService.getUserById(id); return ResponseEntity.ok(user); } @GetMapping public ResponseEntity<List<User>> getAllUsers() { List<User> users = userService.getAllUsers(); return ResponseEntity.ok(users); } @PostMapping public ResponseEntity<Void> insertUser(@RequestBody User user) { userService.insertUser(user); return ResponseEntity.status(HttpStatus.CREATED).build(); } @PutMapping public ResponseEntity<Void> updateUser(@RequestBody User user) { userService.updateUser(user); return ResponseEntity.status(HttpStatus.OK).build(); } @DeleteMapping("/{id}") public ResponseEntity<Void> deleteUser(@PathVariable Integer id) { userService.deleteUser(id); return ResponseEntity.status(HttpStatus.NO_CONTENT).build(); } }
二、MyBatis的增删查改操作
-
查询操作
查询操作通常通过Mapper接口中的
select方法实现。例如,上面的getUserById和getAllUsers方法就是通过select语句查询数据库中的记录。 -
新增操作
新增操作通常通过Mapper接口中的
insert方法实现。在插入记录时,如果数据库表的主键是自增的,可以通过useGeneratedKeys和keyProperty属性将生成的主键值赋值给实体类的相应属性。 -
更新操作
更新操作通常通过Mapper接口中的
update方法实现。在更新记录时,需要指定要更新的字段和条件。 -
删除操作
删除操作通常通过Mapper接口中的
delete方法实现。在删除记录时,需要指定删除的条件。
三、注意事项
-
事务管理
在进行增删改操作时,通常需要开启事务管理以确保数据的一致性和完整性。MyBatis支持声明式事务管理和编程式事务管理两种方式。
-
异常处理
在进行数据库操作时,可能会遇到各种异常情况,如SQL语法错误、数据库连接失败等。因此,在编写代码时需要做好异常处理.

4932

被折叠的 条评论
为什么被折叠?



