Java Fluent Mybatis 项目工程化与常规操作详解流程篇
Java Fluent Mybatis 是一个基于 Mybatis 的 fluent 动态 SQL 构建器,可以帮助我们快速生成复杂的 SQL 语句。下面我们将详细讲解 Java Fluent Mybatis 项目工程化与常规操作的流程。
一、创建项目
首先,我们需要创建一个 Maven 项目,并添加 Java Fluent Mybatis 的依赖。在 pom.xml 文件中添加以下代码:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.5</version>
</dependency>
<dependency>
<groupId>org.mybatis.fluent</groupId>
<artifactId>mybatis-fluent</artifactId>
<version>1.4.2</version>
</dependency>
二、配置 Mybatis
接着,我们需要配置 Mybatis,创建 mybatis-config.xml 文件,并添加以下内容:
<configuration>
<typeAliases>
<!-- 注册别名 -->
<typeAlias alias="User" type="com.example.model.User"/>
</typeAliases>
<!-- 配置数据源 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driverClass}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!-- 配置 Mapper 映射文件 -->
<mappers>
<mapper resource="com/example/mapper/UserMapper.xml"/>
</mappers>
</configuration>
在示例代码中,我们注册了一个 User 类别名,配置了一个数据源和一个 Mapper 文件。
三、编写 Mapper 接口
在上一步中,我们已经配置了一个 Mapper 映射文件,接下来我们需要编写一个对应的 Mapper 接口。
public interface UserMapper {
@Select("SELECT * FROM user")
List<User> getAllUsers();
@Select("SELECT * FROM user WHERE id = #{id}")
User getUserById(int id);
@Insert("INSERT INTO user (id, name, age) VALUES (#{id}, #{name}, #{age})")
int insertUser(User user);
@Update("UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}")
int updateUser(User user);
@Delete("DELETE FROM user WHERE id = #{id}")
int deleteUserById(int id);
}
在示例代码中,我们使用注解的方式来定义 SQL 语句,并将它们映射到对应的方法上。其中 @Select 注解表示查询语句,@Insert 注解表示插入语句,@Update 注解表示更新语句,@Delete 注解表示删除语句。
四、编写 Service 层
接下来,我们需要编写一个 Service 层来调用 Mapper 接口中的方法,处理业务逻辑。
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
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 deleteUserById(int id) {
userMapper.deleteUserById(id);
}
}
在示例代码中,我们注入了一个 UserMapper 对象,并在 Service 层中调用了 Mapper 接口中的方法,处理业务逻辑。
五、编写 Controller 层
最后,我们需要编写一个 Controller 层来处理请求和返回响应。
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("")
public List<User> getAllUsers() {
return userService.getAllUsers();
}
@PostMapping("")
public void insertUser(@RequestBody User user) {
userService.insertUser(user);
}
@PutMapping""
public void updateUser(@RequestBody User user) {
userService.updateUser(user);
}
@DeleteMapping("/{id}")
public void deleteUserById(@PathVariable int id) {
userService.deleteUserById(id);
}
}
在示例代码中,我们定义了四个请求处理方法,分别对应查询、插入、更新和删除操作。其中 @GetMapping 注解表示获取资源,@PostMapping 注解表示创建资源,@PutMapping 注解表示更新资源,@DeleteMapping 注解表示删除资源。
六、示例
下面,我们将以用户管理为例,演示 Java Fluent Mybatis 的使用流程。
1. 创建用户表
首先,我们需要创建一个用户表:
CREATE TABLE user (
id INT PRIMARY KEY,
name VARCHAR(32) NOT NULL,
age INT NOT NULL
);
2. 创建实体类
接着,我们需要创建一个 User 实体类,并添加相应的属性和方法。
public class User {
private int id;
private String name;
private int age;
// 省略 getter 和 setter 方法
}
3. 编写 Mapper 映射文件
在这一步中,我们需要创建一个名为 UserMapper.xml 的 Mapper 映射文件,并编写相应的 SQL 语句。
<mapper namespace="com.example.mapper.UserMapper">
<select id="getAllUsers" resultMap="userMap">
SELECT * FROM user
</select>
<select id="getUserById" parameterType="int" resultMap="userMap">
SELECT * FROM user WHERE id = #{id}
</select>
<insert id="insertUser" parameterType="User">
INSERT INTO user (id, name, age)
VALUES (#{id}, #{name}, #{age})
</insert>
<update id="updateUser" parameterType="User">
UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}
</update>
<delete id="deleteUserById" parameterType="int">
DELETE FROM user WHERE id = #{id}
</delete>
<resultMap id="userMap" type="User">
<id property="id" column="id" />
<result property="name" column="name" />
<result property="age" column="age" />
</resultMap>
</mapper>
在示例代码中,我们使用了 XML 的方式来定义 SQL 语句,并将它们映射到对应的方法上。
4. 编写 Mapper 接口
接着,我们需要创建一个 UserMapper 接口,并继承 BaseMapper 接口,加入以下方法:
public interface UserMapper extends BaseMapper<User> {
}
在示例代码中,我们继承了 BaseMapper 接口,并将泛型指定为 User 类型。
5. 编写 Service 层
在这一步中,我们需要创建一个 UserService 类,并实现相应的方法,调用 Mapper 接口中的方法。
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List<User> getAllUsers() {
return userMapper.selectAll();
}
public User getUserById(int id) {
return userMapper.selectByPrimaryKey(id);
}
public void insertUser(User user) {
userMapper.insert(user);
}
public void updateUser(User user) {
userMapper.updateByPrimaryKey(user);
}
public void deleteUserById(int id) {
userMapper.deleteByPrimaryKey(id);
}
}
在示例代码中,我们注入了一个 UserMapper 对象,并实现了查询、插入、更新和删除操作的方法。
6. 编写 Controller 层
最后,我们需要创建一个 UserController 类,并实现相应的方法,处理请求和返回响应。
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("")
public List<User> getAllUsers() {
return userService.getAllUsers();
}
@GetMapping("/{id}")
public User getUserById(@PathVariable int id) {
return userService.getUserById(id);
}
@PostMapping("")
public void insertUser(@RequestBody User user) {
userService.insertUser(user);
}
@PutMapping("/{id}")
public void updateUser(@PathVariable int id, @RequestBody User user) {
user.setId(id);
userService.updateUser(user);
}
@DeleteMapping("/{id}")
public void deleteUserById(@PathVariable int id) {
userService.deleteUserById(id);
}
}
在示例代码中,我们定义了五个请求处理方法,分别对应查询所有用户、查询单个用户、插入用户、更新用户和删除用户的操作。其中 @GetMapping 和 @PostMapping 注解表示 GET 和 POST 请求,@PutMapping 注解表示 PUT 请求,@DeleteMapping 注解表示 DELETE 请求。
至此,Java Fluent Mybatis 项目工程化与常规操作的全部流程已经讲解完毕。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java Fluent Mybatis 项目工程化与常规操作详解流程篇 下 - Python技术站