TKMybatis與Mybatis-plus都是mybatis的擴展,有相同的地方,也有不同的地方。
1.導入坐標
<!--mybatis依賴--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.0.0</version> </dependency> <!--tk.mybatis依賴--> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId> <version>2.1.5</version> </dependency>
需要注意的是,這里mybatis的版本必須在2.0.0+,不然會報錯。
2.創建實體類
package com.example.easypoidemoadmin.entity; import lombok.Data; import javax.persistence.Column; import javax.persistence.Table; /** * @author zhongyushi * @date 2020/6/26 0026 * @dec 描述 */ @Data @Table(name = "comp") public class Company { @Id @Column(name = "name") private String name; @Column(name = "logo") private String logo; @Column(name = "dec1") private String dec; public Company(String name,String logo,String dec){ this.name=name; this.logo=logo; this.dec=dec; } public Company(){} }
這里通過Table注解來指定數據庫中的表名,默認和實體類相同,這里為了簡單,就修改了表名。
3.創建dao接口類
package com.example.easypoidemoadmin.dao; import com.example.easypoidemoadmin.entity.Company; import tk.mybatis.mapper.common.Mapper; /** * @author zhongyushi * @date 2020/6/26 0026 * @dec 描述 */ @org.apache.ibatis.annotations.Mapper public interface CompanyDao extends Mapper<Company> { }
通過集成Mapper方法來使用TKMybatis,注意不能把包導錯了。
4.啟動類添加包掃描
import tk.mybatis.spring.annotation.MapperScan; @SpringBootApplication @MapperScan("com.example.easypoidemoadmin.dao")
這里包掃描的注解也是使用TKMybatis的。
5.controller接口測試
@Autowired private CompanyDao companyDao; @GetMapping("/test") public void test(){ List<Company> companies = companyDao.selectAll(); System.out.println(companies); }
這里只使用了一個方法,還有一些常用的方法,比如insertSelective,它會只把有值(不為NULL)的屬性插入到數據庫。其他的雷同,主要包含Selective即可。
6.常用注解
6.1主鍵自增
mysql:
mysql可以在創建表時指定主鍵自增,因此在插入數據時不給id的值即可。
oracle:
@KeySql(sql = "select attach.nextval from dual", order = ORDER.BEFORE)
其實就是先創建一個序列,然后在這里去使用序列的值。
創建序列的語句:
create sequence xk_SEQ increment by 1 start with 1 minvalue 1 maxvalue 9999999 order cache 20 cycle;
xk_SEQ是序列名稱。
7.分頁
分頁使用插件PageHelper,然后實例化一個PageInfo對象,里面包含了查詢的數據列表,數據總條數等等。
public Result getList(String name,String dec, Integer page, Integer limit) { Map<String,Object> map=new HashMap<>(); map.put("name",name); map.put("dec",dec); List<Company> list =comDao.selectBySelective(map); PageHelper.startPage(page, limit); PageInfo pageInfo = new PageInfo(list); return new Result(200, pageInfo.getList(), (int) pageInfo.getTotal(), pageInfo.getPages()); }
.