通用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 { 8public static void main(String[] args) { 9SpringApplication.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: 2port: 8080 3 4 logging: 5level: 6com.myx.demo: 7debug 8 spring: 9datasource: #spring数据源的配置 10url: jdbc:mysql://localhost:3306/day11mybatis 11username: root 12password: 123

1.5、通用Mapper的测试类
1 @RunWith(SpringRunner.class) 2 @SpringBootTest(classes = Application.class) 3 public class NewUserMapperTest { 4 5@Autowired 6private UserMapper userMapper; 7 8 9 }

1.5.1 id 的专用查询方法
1 @Test 2public void testSelectId() { 3userMapper.selectByPrimaryKey(1L); //id专用查询方法 4System.out.println( userMapper.selectByPrimaryKey(1L)); 5}

通用Mapper简单使用

文章图片

1.5.2 属性查询
1 @Test 2public void testSelectName() { 3User user = new User(); 4user.setName("张三"); //哪个属性有值where条件就根据哪个属性生成,id除外 5List< User> select = userMapper.select(user); 6System.out.println(select); 7}

通用Mapper简单使用

文章图片

1.5.3 属性值唯一查询
1 @Test 2public void testSelectOne() { 3User user = new User(); 4user.setUserName("zhangsan"); //查询值有多个会报错 5 6System.out.println(userMapper.selectOne(user)); 7 8}

通用Mapper简单使用

文章图片

1.5.4 统计个数
1 @Test 2public void testSelectCount() { 3System.out.println(userMapper.selectCount(null)); //没有查询条件就全查 4}

通用Mapper简单使用

文章图片

1.5.5 插入
1 @Test 2public void testInsert() { 3User user = new User(); 4user.setUserName("孙悟空"); 5user.setName("sunwukong"); 6user.setAge(500); 7user.setId(50L); 8user.setPassword("234"); 9int insert = userMapper.insert(user); 10System.out.println(insert); 11}

通用Mapper简单使用

文章图片

1.5.6 selective插入
1 /* 2* insertSelective方法:有值才操作,没有值不理会,比上insert方法效率高 3* */ 4@Test 5public void testInsertSelective() { 6User user = new User(); 7user.setUserName("猪八戒"); 8user.setName("sunwukong"); 9user.setAge(500); 10user.setId(51L); 11user.setPassword("234"); 12user.setCreated(new Date()); 13int insert = userMapper.insertSelective(user); 14System.out.println(insert); 15}

通用Mapper简单使用

文章图片

1.5.7 删除
1@Test 2public void testDelete() { 3User user = new User(); 4user.setUserName("孙悟空"); 5int delete = userMapper.delete(user); 6System.out.println(delete); 7}

通用Mapper简单使用

文章图片

 
  1.5.8 根据id删除,主键的特有方法
  1@Test 2 public void testDeleteByPrimaryKey() { 3 userMapper.deleteByPrimaryKey(51L); 4 } 

  1.5.9 修改
1 /* 2* 指定的属性改变为指定的值,其余的为null 3* */ 4@Test 5public void testUpdateByPrimaryKey() { 6User user = new User(); 7user.setId(36L); 8user.setUserName("李白"); 9user.setName("libai"); 10 11userMapper.updateByPrimaryKey(user); 12}

通用Mapper简单使用

文章图片

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); }

通用Mapper简单使用

文章图片

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); }

通用Mapper简单使用

文章图片

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)); }

通用Mapper简单使用

文章图片

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)); }

通用Mapper简单使用

文章图片

【通用Mapper简单使用】 

    推荐阅读