1. 程式人生 > >通用Mapper簡單使用

通用Mapper簡單使用

 

通用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 public
interface 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));

    }