SpringBoot環境下使用通用Mapper
環境搭建:
約定的項目結構
約定的配置檔案
1,引入SpringBoot的maven依賴
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath/>
</parent>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
引入通用Mapper依賴
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
2,書寫配置檔案
在resources下建application.properties/.yml/.yaml,
放在dao、service、controller包的同級
3,書寫啟動類
@SpringBootApplication
@MapperScan(“com.xxx.dao”) //tk.mybatis包下
4,書寫實體類
例:
@Table(name = "c_admin")
public class Admin {
@Id
private String id;
private String username;
private String password;
private String nickname;
}
使用@Table注解将資料庫中的表與實體類建立映射關系
使用@Id注解标注資料庫表中的主鍵
5,書寫dao
dao繼承tk.mybatis包下的Mapper類,泛型為目前dao操作的實體類
@Repository
public interface AdminDao extends Mapper<Admin> {
}
6,書寫service層、書寫controller層
通用Mapper中常用方法
查詢方法:
1,查詢全部
public void test1(){
List<Admin> admins = adminDao.selectAll();
for (Admin admin : admins) {
System.out.println(admin);
}
}
2,根據主鍵查詢
//查詢主鍵為"1"的
public void test2(){
Admin admin = adminDao.selectByPrimaryKey("1");
System.out.println(admin);
}
3,根據某個字段條件查詢
//查詢所有nickname="小王"的
public void test3(){
Admin admin=new Admin();
admin.setNickname("小王");
List<Admin> admins = adminDao.select(admin);
for (Admin admin1 : admins) {
System.out.println(admin1);
}
}
4,複雜條件查詢
//查詢nickname="小王"且username不為null的
//複雜條件查詢需要用到Example類
public void test4(){
Example example=new Example(Admin.class);
example.createCriteria().andEqualTo("nickname", "小王").andIsNotNull("username");
List<Admin> admins = adminDao.selectByExample(example);
for (Admin admin : admins) {
System.out.println(admin);
}
}
5,分頁查詢
//查詢第一頁,每頁顯示3條資料
//分頁查詢需要用到RowBounds類
public void test6(){
int page = 1;
int pageSize = 3;
Admin admin = new Admin();
admin.setUsername("admin");
//offset:起始下标 limit:查詢幾條
RowBounds rowBounds = new RowBounds((page-1)*pageSize,pageSize);
List<Admin> admins = adminDao.selectByRowBounds(admin, rowBounds);
for (Admin admin1 : admins) {
System.out.println(admin1);
}
}
增删改方法
1,添加
public void test7(){
Admin admin = new Admin();
admin.setId("11");
admin.setUsername("qwe");
admin.setPassword("ewq");
int i = adminDao.insert(admin); //i代表受影響的行數
System.out.println(i);
}
2,修改
//updateByPrimaryKey 根據主鍵修改,沒有修改的屬性會置為null
public void test9(){
Admin admin = new Admin();
admin.setId("2");
admin.setUsername("aaaa");
admin.setPassword("bbbb");
adminDao.updateByPrimaryKey(admin);
}
//updateByPrimaryKeySelective()
//根據主鍵修改,沒有修改的屬性不會置為null
public void test10(){
Admin admin = new Admin();
admin.setId("3");
admin.setUsername("aaaa");
admin.setPassword("bbbb");
adminDao.updateByPrimaryKeySelective(admin);
}
3,删除
//根據主鍵删除
public void test11(){
Admin admin = new Admin();
int delete = adminDao.delete(admin);
System.out.println(delete);
}
//根據條件删除
//删除nickname不為null的
public void test12(){
Example example = new Example(Admin.class);
example.createCriteria().andIsNull("nickname");
int i = adminDao.deleteByExample(example);
System.out.println(i);
}