通用Mapper簡單使用
阿新 • • 發佈:2018-12-08
通用Mapper
1、通用Mapper的使用
1.1、匯入依賴
1 <!-- 通用mapper --> 2 <dependency> 3 <groupId>tk.mybatis</groupId> 4 <artifactId>mapper-spring-boot-starter</artifactId> 5 <version>2.0.2</version> 6 </dependency>
1.2、開啟包掃描
注意匯入的包,一定要和匯入的的依賴有關的包
1 import org.springframework.boot.SpringApplication; 2 import org.springframework.boot.autoconfigure.SpringBootApplication; 3 import tk.mybatis.spring.annotation.MapperScan; 4 5 @SpringBootApplication 6 @MapperScan("com.myx.demo.mapper")7 public class Application { 8 public static void main(String[] args) { 9 SpringApplication.run(Application.class); 10 } 11 }
1.3、UserMapper介面繼承通用Mapper
1 package com.myx.demo.mapper; 2 import com.myx.demo.pojo.User; 3 import tk.mybatis.mapper.common.Mapper; 4 5 publicinterface UserMapper extends Mapper<User>{ 6 7 }
1.4、SpringBoot預設的檔名Application.yml配置
1 server: 2 port: 8080 3 4 logging: 5 level: 6 com.myx.demo: 7 debug 8 spring: 9 datasource: #spring資料來源的配置 10 url: jdbc:mysql://localhost:3306/day11mybatis 11 username: root 12 password: 123
1.5、通用Mapper的測試類
1 @RunWith(SpringRunner.class) 2 @SpringBootTest(classes = Application.class) 3 public class NewUserMapperTest { 4 5 @Autowired 6 private UserMapper userMapper; 7 8 9 }
1.5.1 id 的專用查詢方法
1 @Test 2 public void testSelectId() { 3 userMapper.selectByPrimaryKey(1L);//id專用查詢方法 4 System.out.println( userMapper.selectByPrimaryKey(1L)); 5 }
1.5.2 屬性查詢
1 @Test 2 public void testSelectName() { 3 User user = new User(); 4 user.setName("張三");//哪個屬性有值where條件就根據哪個屬性生成,id除外 5 List<User> select = userMapper.select(user); 6 System.out.println(select); 7 }
1.5.3 屬性值唯一查詢
1 @Test 2 public void testSelectOne() { 3 User user = new User(); 4 user.setUserName("zhangsan");//查詢值有多個會報錯 5 6 System.out.println(userMapper.selectOne(user)); 7 8 }
1.5.4 統計個數
1 @Test 2 public void testSelectCount() { 3 System.out.println(userMapper.selectCount(null));//沒有查詢條件就全查 4 }
1.5.5 插入
1 @Test 2 public void testInsert() { 3 User user = new User(); 4 user.setUserName("孫悟空"); 5 user.setName("sunwukong"); 6 user.setAge(500); 7 user.setId(50L); 8 user.setPassword("234"); 9 int insert = userMapper.insert(user); 10 System.out.println(insert); 11 }
1.5.6 selective插入
1 /* 2 * insertSelective方法:有值才操作,沒有值不理會,比上insert方法效率高 3 * */ 4 @Test 5 public void testInsertSelective() { 6 User user = new User(); 7 user.setUserName("豬八戒"); 8 user.setName("sunwukong"); 9 user.setAge(500); 10 user.setId(51L); 11 user.setPassword("234"); 12 user.setCreated(new Date()); 13 int insert = userMapper.insertSelective(user); 14 System.out.println(insert); 15 }
1.5.7 刪除
1 @Test 2 public void testDelete() { 3 User user = new User(); 4 user.setUserName("孫悟空"); 5 int delete = userMapper.delete(user); 6 System.out.println(delete); 7 }
1.5.8 根據id刪除,主鍵的特有方法
1 @Test 2 public void testDeleteByPrimaryKey() { 3 userMapper.deleteByPrimaryKey(51L); 4 }
1.5.9 修改
1 /* 2 * 指定的屬性改變為指定的值,其餘的為null 3 * */ 4 @Test 5 public void testUpdateByPrimaryKey() { 6 User user = new User(); 7 user.setId(36L); 8 user.setUserName("李白"); 9 user.setName("libai"); 10 11 userMapper.updateByPrimaryKey(user); 12 }
1.5.10 selecttive修改
/* * 只改變指定的屬性,其餘屬性不變 * */ @Test public void testUpdatePriimarySelective() { User user = new User(); user.setId(33L); user.setUserName("王昭君"); user.setName("wangzhaojun"); user.setUpdated(new Date()); userMapper.updateByPrimaryKeySelective(user); }
2 通用Mapper分頁
2.1 分頁的依賴
<!--分頁的依賴--> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.3</version> </dependency>
2.2 分頁方法的測試
@RunWith(SpringRunner.class) @SpringBootTest(classes = Application.class) public class MapperPageQueryTest { @Autowired private UserMapper userMapper; @Test public void testPageQuery() { //開啟分頁 PageHelper.startPage(3,5); //不包含總的頁數,總的元素個數 List<User> select = userMapper.select(null); System.out.println(select); } @Test public void testPageInfoQuery() { //開啟分頁 PageHelper.startPage(3,5); //用page型別或者pageInfo型別目的就是獲取總頁數以及總條數 Page<User> userPage = (Page<User>) userMapper.select(null); //分頁返回的結果 //PageInfo<User> pageInfo = new PageInfo<>(select); System.out.println(userPage); } }
3 通用Mapper組合查詢和排序
3.1 新增普通條件
/* * example要表達的含義為??? * 組合的查詢條件 * */ @Test public void testSelectByExample(){ //條件的組合工具 Example example = new Example(User.class); //條件,一個criteria中可以組合無數個條件,但是這些條件都是and關係 Example.Criteria criteria = example.createCriteria(); criteria.andEqualTo("sex","1"); criteria.andBetween("age",20,30); List<User> users = userMapper.selectByExample(example); System.out.println("users = " + users); }
3.2 新增or條件的組合查詢
@Test public void testSelectByExampleOr(){ //條件的組合工具 Example example = new Example(User.class); //條件,一個criteria中可以組合無數個條件,但是這些條件都是and關係 Example.Criteria criteria = example.createCriteria(); criteria.andEqualTo("sex","1"); Example.Criteria criteria1 = example.createCriteria(); criteria1.andLike("name","%李%"); //直接使用example的or方法使得第二個條件和原來的條件組合or關係 example.or(criteria1); System.out.println(userMapper.selectByExample(example)); }
3.3 排序
@Test public void testSelectByExampleOrder(){ //條件的組合工具 Example example = new Example(User.class); //條件,一個criteria中可以組合無數個條件,但是這些條件都是and關係 Example.Criteria criteria = example.createCriteria(); criteria.andEqualTo("sex","1"); Example.Criteria criteria1 = example.createCriteria(); criteria1.andLike("name","%李%"); //直接使用example的or方法使得第二個條件和原來的條件組合or關係 example.or(criteria1); //排序 example.setOrderByClause("id DESC"); System.out.println(userMapper.selectByExample(example)); }