public interface MyBaseMapper<T> extends Mapper<T>, MySqlMapper<T>,MyInsertListMapper<T> {} public interface AdvertMapper extends MyBaseMapper<Advert> {},有没有添加数据到数据库并返回id的方法?
时间: 2023-12-10 22:03:38 浏览: 74
Mybatis Generator生成的Mapper中有一个`insert`方法,可以将数据插入到数据库中,但是不会返回id。如果需要返回插入数据的id,可以在`insert`方法后添加`useGeneratedKeys="true" keyProperty="id"`,其中`keyProperty`为自动生成的主键字段名。例如:
```
<insert id="insert" parameterType="com.example.entity.Advert" useGeneratedKeys="true" keyProperty="id">
insert into advert(title, content)
values (#{title}, #{content})
</insert>
```
这样插入数据后,会将自动生成的id赋值给`Advert`对象的id字段。
相关问题
public interface MyBaseMapper<T> extends Mapper<T>, MySqlMapper<T>,MyInsertListMapper<T> { }和public interface AdvertMapper extends MyBaseMapper<Advert> { }如何关联查询
关联查询的实现需要根据具体的业务需求来确定,一般可以使用MyBatis的XML配置文件或注解方式实现。以下是一个简单的示例,假设我们有两个实体类Advert和User,其中Advert中包含一个userId属性,表示该广告是由哪个用户发布的。我们可以通过关联查询,将该广告对应的用户信息一起查询出来。
首先,在AdvertMapper接口中定义一个查询方法,使用@Results注解将查询结果映射到Advert和User对象中:
```
@Select("SELECT a.*, u.username, u.age FROM advert a LEFT JOIN user u ON a.userId = u.id WHERE a.id = #{id}")
@Results({
@Result(property = "id", column = "id"),
@Result(property = "title", column = "title"),
@Result(property = "userId", column = "userId"),
@Result(property = "user.username", column = "username"),
@Result(property = "user.age", column = "age")
})
Advert findAdvertWithUserById(Long id);
```
接下来,在Advert实体类中定义一个User对象,用于接收查询结果:
```
public class Advert {
private Long id;
private String title;
private Long userId;
private User user;
// 省略getter和setter方法
}
```
最后,在User实体类中定义相应的属性和方法:
```
public class User {
private Long id;
private String username;
private Integer age;
// 省略getter和setter方法
}
```
这样,我们就可以通过调用AdvertMapper中的findAdvertWithUserById方法,同时查询出对应的广告和用户信息。
springboot项目中public interface MyBaseMapper<T> extends Mapper<T>, MySqlMapper<T>,MyInsertListMapper<T> { }基础分页如何写代码
可以使用MyBatis的PageHelper插件来实现基础分页。以下是一个示例代码:
```
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
public abstract class BaseService<M extends Mapper<T>, T> {
@Autowired
protected M mapper;
public PageInfo<T> page(int pageNum, int pageSize) {
PageHelper.startPage(pageNum, pageSize);
List<T> list = mapper.selectAll();
return new PageInfo<>(list);
}
}
```
这里定义一个抽象类BaseService,泛型M为Mapper类型,T为实体类型。在page方法中,先调用PageHelper.startPage方法设置分页参数,然后使用Mapper的selectAll方法查询所有数据,最后将查询结果封装在PageInfo对象中返回。在具体的Service中继承BaseService并指定泛型即可使用该方法进行基础分页。
阅读全文