mybatis-plus无xml开发
时间: 2023-09-25 19:16:09 浏览: 220
是的,MyBatis-Plus可以实现无XML的开发。MyBatis-Plus提供了一系列的注解来替代XML文件中的SQL语句配置,包括@TableName、@TableId、@TableField、@SqlParser等注解,可以直接在实体类中进行注解配置。
此外,MyBatis-Plus还提供了Lambda表达式查询、代码生成器等功能,大大简化了开发流程。使用MyBatis-Plus无XML开发,可以减少冗余的XML文件,提高开发效率,降低维护成本。
相关问题
Mybatis-Plus无XML开发详细
Mybatis-Plus 是 Mybatis 的增强工具,可以帮助开发者更加便捷地进行数据库操作。其中最大的特点之一就是支持无 XML 配置,这样可以使开发过程更加高效和简洁。
下面是 Mybatis-Plus 无 XML 开发的详细步骤:
1. 引入 Mybatis-Plus 依赖
```xml
<!-- Mybatis-Plus 核心依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.x.x</version>
</dependency>
```
2. 配置数据源
在 application.properties 或 application.yml 文件中配置数据源信息,例如:
```yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/mybatis-plus-demo?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: root
```
3. 创建实体类
创建和数据库表对应的实体类,可以使用 Lombok 简化代码,例如:
```java
@Data
@TableName("user")
public class User {
@TableId(type = IdType.AUTO)
private Long id;
private String name;
private Integer age;
private String email;
private Date createTime;
}
```
其中 `@TableName` 注解指定实体类对应的表名,`@TableId` 注解指定主键生成策略。
4. 创建 Mapper 接口
创建继承自 `BaseMapper` 的 Mapper 接口,例如:
```java
public interface UserMapper extends BaseMapper<User> {
}
```
这里不需要写 SQL,Mybatis-Plus 会根据实体类自动生成 CRUD SQL。
5. 进行数据库操作
在 Service 层中使用 `UserMapper` 进行数据库操作,例如:
```java
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List<User> list() {
return userMapper.selectList(null);
}
public User getById(Long id) {
return userMapper.selectById(id);
}
public boolean save(User user) {
return userMapper.insert(user) > 0;
}
public boolean update(User user) {
return userMapper.updateById(user) > 0;
}
public boolean remove(Long id) {
return userMapper.deleteById(id) > 0;
}
}
```
这里可以直接使用 `UserMapper` 提供的方法进行数据库操作,不需要写 SQL。
6. 测试
可以通过 JUnit 测试来测试代码是否正确,例如:
```java
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserServiceTest {
@Autowired
private UserService userService;
@Test
public void testList() {
List<User> userList = userService.list();
Assert.assertEquals(5, userList.size());
}
@Test
public void testGetById() {
User user = userService.getById(1L);
Assert.assertNotNull(user);
}
@Test
public void testSave() {
User user = new User();
user.setName("Tom");
user.setAge(18);
user.setEmail("tom@example.com");
boolean result = userService.save(user);
Assert.assertTrue(result);
}
@Test
public void testUpdate() {
User user = userService.getById(1L);
user.setName("Jerry");
boolean result = userService.update(user);
Assert.assertTrue(result);
}
@Test
public void testRemove() {
boolean result = userService.remove(1L);
Assert.assertTrue(result);
}
}
```
这里简单测试了一下常用的增删改查操作,可以根据需要进行扩展。
以上就是 Mybatis-Plus 无 XML 开发的详细步骤,相比传统的 XML 配置方式,更加简洁高效,减少了很多重复劳动。
mybatis-plus lambdaquerywrapper xml
MyBatis-Plus的LambdaQueryWrapper可以与XML文件一起使用。您可以在XML文件中使用<where>标签和<if>标签来构建动态的查询条件。LambdaQueryWrapper的查询条件可以通过在<if>标签中使用${}表达式来引用。以下是一个示例:
```
<!-- UserMapper.xml -->
<select id="userList" resultType="User">
SELECT *
FROM user
<where>
<if test="name != null">
AND name = #{name}
</if>
<if test="age != null">
AND age = #{age}
</if>
</where>
</select>
```
在上面的示例中,<if>标签中的test属性用于判断是否需要添加该查询条件。您可以根据需要添加更多的<if>标签来构建更复杂的查询条件。在Java中,您可以通过调用LambdaQueryWrapper的相应方法来设置name和age属性的值,以根据这些属性进行查询。
请注意,您需要在SqlSessionFactory中配置Mapper的位置,以便MyBatis能够找到UserMapper.xml文件。
阅读全文