Mapper<T>, MySqlMapper<T>,MyInsertListMapper<T>中通过id自动查询的方法有哪些
时间: 2023-12-14 16:03:35 浏览: 144
在Mapper<T>中,通过id自动查询的方法为:
- T selectByPrimaryKey(Object key)
在MySqlMapper<T>中,通过id自动查询的方法为:
- T selectOne(T record)
在MyInsertListMapper<T>中,通过id自动查询的方法为:
- List<T> selectByIdList(List<?> idList)
相关问题
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方法,同时查询出对应的广告和用户信息。
Mapper<T>, MySqlMapper<T>,MyInsertListMapper<T>这三个接口中是否存在存入数据并返回id 的方法
在这三个接口中,都没有提供存入数据并返回id的方法。这三个接口的作用分别是:
- Mapper<T>:提供了一些基本的CRUD操作方法,如`selectByPrimaryKey`、`insert`、`updateByPrimaryKey`等。
- MySqlMapper<T>:提供了一些MySQL特有的操作方法,如`replace`、`insertSelective`等。
- MyInsertListMapper<T>:提供了批量插入数据的方法。
如果需要实现存入数据并返回id的方法,可以在自定义Mapper接口中添加一个方法,使用Mybatis的`<selectKey>`标签来实现。例如:
```
public interface AdvertMapper extends MyBaseMapper<Advert> {
@Insert("insert into advert(title, content) values (#{title}, #{content})")
@SelectKey(statement = "select last_insert_id()", keyProperty = "id", before = false, resultType = int.class)
int insertAndGetId(Advert advert);
}
```
这个方法会将`Advert`对象插入到数据库中,并将自动生成的id赋值给`Advert`对象的id字段,同时返回自动生成的id。注意,`@SelectKey`注解中的`statement`属性的值是获取自增主键的SQL语句,这里使用了MySQL的`last_insert_id()`函数。
阅读全文