要实现MyBatis-Plus与MyBatis的共存,需要注意一些配置和使用方式方面的细节。下面是实现步骤的详细攻略:
- 引入MyBatis-Plus和MyBatis的依赖包。在pom.xml中添加以下依赖:
```xml
```
- 配置MyBatis-Plus的相关参数。在application.yml或application.properties中添加以下配置:
yaml
mybatis-plus:
mapper-locations: classpath:mapper/*.xml # mapper文件路径
typeAliasesPackage: 包路径 # 实体类路径
Mapper文件夹下需要分别存放MyBatis和MyBatis-Plus相应的Mapper文件,例如:
mapper
├── mybatis
| └── UserMapper.xml
└── plus
└── UserPlusMapper.xml
- 在代码中使用MyBatis和MyBatis-Plus。例如,在同一个Service类中定义两个Mapper变量并注入:
```java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@Service
@Transactional
public class UserService extends ServiceImpl
@Autowired
private UserMapper userMapper;
@Autowired
private UserPlusMapper userPlusMapper;
// MyBatis的调用方式
public User queryUserById(Long id) {
return userMapper.selectByPrimaryKey(id);
}
// MyBatis-Plus的调用方式
public User queryUserByName(String name) {
return this.getOne(new QueryWrapper<User>().eq("name", name));
}
}
```
在上面的例子中,UserMapper和UserPlusMapper分别对应MyBatis和MyBatis-Plus的Mapper文件,可以根据需要调用对应的方法。
另外,可以在MyBatis-Plus的Mapper文件中使用MyBatis的标签和语法,例如:
```xml
<select id="queryUserById" resultType="com.example.entity.User">
SELECT * FROM user WHERE id = #{id}
</select>
在这个例子中,使用了MyBatis的语法来查询数据,同时在方法中调用MyBatis-Plus的getOne方法来获取该记录。
以上就是实现MyBatis-Plus与MyBatis共存的完整攻略,下面给出另一个示例来帮助更好地理解:
-
首先在pom.xml中引入MyBatis-Plus和MyBatis的依赖包。依赖与之前相同,这里略去。
-
在application.yml或application.properties中添加以下MyBatis-Plus的配置:
yaml
mybatis-plus:
mapper-locations: classpath:mapper/*.xml # mapper文件路径
typeAliasesPackage: 包路径 # 实体类路径
- 在代码中定义两个Mapper变量,一个使用MyBatis,一个使用MyBatis-Plus,分别实现对同一个实体类的CRUD操作:
```java
import java.util.List;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@Service
@Transactional
public class UserService extends ServiceImpl
@Autowired
private UserMapper userMapper;
@Autowired
private UserMyBatisPlusMapper userMyBatisPlusMapper;
// MyBatis的调用方式
public User queryUserByIdMyBatis(Long id) {
return userMapper.selectByPrimaryKey(id);
}
// MyBatis-Plus的调用方式
public User queryUserByIdMyBatisPlus(Long id) {
return userMyBatisPlusMapper.selectById(id);
}
// MyBatis的调用方式
public List<User> queryAllMyBatis() {
return userMapper.selectAll();
}
// MyBatis-Plus的调用方式
public List<User> queryAllMyBatisPlus() {
return this.list();
}
// MyBatis的调用方式
public int createUserMyBatis(User user) {
return userMapper.insert(user);
}
// MyBatis-Plus的调用方式
public boolean createUserMyBatisPlus(User user) {
return this.save(user);
}
// MyBatis的调用方式
public int updateUserMyBatis(User user) {
return userMapper.updateByPrimaryKey(user);
}
// MyBatis-Plus的调用方式
public boolean updateUserMyBatisPlus(User user) {
return this.updateById(user);
}
// MyBatis的调用方式
public int deleteUserMyBatis(Long id) {
return userMapper.deleteByPrimaryKey(id);
}
// MyBatis-Plus的调用方式
public boolean deleteUserMyBatisPlus(Long id) {
return this.removeById(id);
}
}
```
在上面的例子中,UserMapper对应MyBatis的Mapper文件,UserMyBatisPlusMapper对应MyBatis-Plus的Mapper文件,同样的实体类User可以被这两个Mapper文件所操作。
- 在MyBatis-Plus的Mapper文件中,可以使用MyBatis的标签和语法来进行查询和修改,例如:
```xml
<select id="queryUserByNameMyBatis" resultType="com.example.entity.User">
SELECT * FROM user WHERE name = #{name}
</select>
<update id="updateUserMyBatis" parameterType="com.example.entity.User">
UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}
</update>
在这个例子中,使用了MyBatis的语法来查询和修改数据,在方法中调用MyBatis-Plus的方法来实现这些操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mybatis-plus与mybatis共存的实现 - Python技术站