栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

tkMapper插件的详细讲解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

tkMapper插件的详细讲解

tkMapper插件的详细讲解
  • 一、tkMapper简介
        • tkMapper就是一个MyBatis插件,是在MyBatis的基础上提供的开发工具,可以让开发变得简单,提高开发效率。
    • 作用:
        • 1、提供了针对单表通用的数据库操作方法
        • 2、逆向工程(根据数据表生成实体类、dao接口、映射文件)
  • 二、tkMapper整合
    • 1、基于SpringBoot完成MyBatis的整合
    • 2、整合tkMapper
      • 2.1、添加tkMapper的依赖
      • 2.2、修改启动类的@MapperScan注解的包为***tk.mybatis.spring.annotation.MapperScan***
  • 三、tkMapper的使用
    • 1、创建数据表
    • 2、创建实体类
    • 3、创建DAO接口
    • 4、测试
  • 四、tkMapper提供的常用方法
  • 五、如何使用tkMapper进行关联查询
    • 所有的关联查询都可以通过多个单表操作实现
    • 也可自定义连接查询,在DAO接口中自定义方法,创建Mapper文件
  • 六、逆向工程
    • 1、添加逆向工程依赖
    • 2、逆向工程配置
    • 3、将配置文件设置到逆向工程的maven插件


一、tkMapper简介 tkMapper就是一个MyBatis插件,是在MyBatis的基础上提供的开发工具,可以让开发变得简单,提高开发效率。 作用: 1、提供了针对单表通用的数据库操作方法 2、逆向工程(根据数据表生成实体类、dao接口、映射文件)
二、tkMapper整合 1、基于SpringBoot完成MyBatis的整合 2、整合tkMapper 2.1、添加tkMapper的依赖
       
            tk.mybatis
            mapper-spring-boot-starter
            2.1.5
        
2.2、修改启动类的@MapperScan注解的包为tk.mybatis.spring.annotation.MapperScan
package com.qfedu.tkmapperdemo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import tk.mybatis.spring.annotation.MapperScan;

@SpringBootApplication
@MapperScan("com.qfedu.tkmapperdemo.dao")
public class TkmapperDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(TkmapperDemoApplication.class, args);
    }

}

三、tkMapper的使用 1、创建数据表
DROp TABLE IF EXISTS `users`;
CREATE TABLE `users` (
  `user_id` int(64) NOT NULL AUTO_INCREMENT COMMENT '主键id;用户id',
  `username` varchar(255) NOT NULL COMMENT '用户名;用户名',
  `password` varchar(64) NOT NULL COMMENT '密码;密码',
  `nickname` varchar(255) DEFAULT NULL COMMENT '昵称;昵称',
  `realname` varchar(90) DEFAULT NULL COMMENT '真实姓名;真实姓名',
  `user_img` varchar(1024) NOT NULL COMMENT '头像;头像',
  `user_mobile` varchar(255) DEFAULT NULL COMMENT '手机号;手机号',
  `user_email` varchar(255) DEFAULT NULL COMMENT '邮箱地址;邮箱地址',
  `user_sex` varchar(1) DEFAULT NULL COMMENT '性别;M(男) or F(女)',
  `user_birth` datetime DEFAULT NULL COMMENT '生日;生日',
  `user_regtime` datetime NOT NULL COMMENT '注册时间;创建时间',
  `user_modtime` datetime NOT NULL COMMENT '更新时间;更新时间',
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='用户';
2、创建实体类
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {

    private int userId;
    private String username;
    private String password;
    private String nickname;
    private String realname;
    private String userImg;
    private String userMobile;
    private String userEmail;
    private String userSex;
    private Date userBirth;
    private Date userRegtime;
    private Date userModtime;
}
3、创建DAO接口

tkMapper已经完成了对单表的通用操作的封装,封装在Mapper接口和MySqlMapper接口;因此如果我们要完成对单表的操作,只需自定义DAO接口继承Mapper接口和MySqlMapper接口。

public interface UserDao extends Mapper, MySqlMapper {
}

4、测试
@RunWith(SpringRunner.class)
@SpringBootTest(classes = TkmapperDemoApplication.class)
public class UserDaoTest {

    @Autowired
    private UserDao userDao;

    @Test
    public void test(){
        User user = new User();
        user.setUsername("aaaa");
        user.setPassword("1111");
        user.setUserImg("img/default.png");
        user.setUserRegtime(new Date());
        user.setUserModtime(new Date());
        int i = userDao.insert(user);
        System.out.println(i);
    }

}
四、tkMapper提供的常用方法
@RunWith(SpringRunner.class)
@SpringBootTest(classes = TkmapperDemoApplication.class)
public class CategoryDAOTest {
    @Autowired
    private CategoryDAO categoryDAO;

    @Test
    public void testInsert() {
        Category category = new Category(0, "测试类别2", 1, 0, "0.2png", "haha", "aaa.jpg", "black");
        //int i = categoryDAO.insert(category);
        int i = categoryDAO.insertUseGeneratedKeys(category);
        System.out.println(category.getCategoryId());
        assertEquals(1, i);
    }


    @Test
    public void testUpdate() {
        Category category = new Category(47, "测试类别3", 1, 0, "0.3png", "haha3", "aaa.jpg", "black");
        int i = categoryDAO.updateByPrimaryKey(category);
        //根据自定义条件修改,Example example就是封装条件的
        //categoryDAO.updateByExample(Example example);
        assertEquals(1, i);
    }


    @Test
    public void testDelete(){
        int i = categoryDAO.deleteByPrimaryKey(47);
        //根据条件删除
        //categoryDAO.deleteByExample(Example example);
        assertEquals(1,i);
    }


    @Test
    public void testSelect1(){
        //查询所有
        List categories = categoryDAO.selectAll();
        for(Category category : categories){
            System.out.println(category);
        }
    }


    @Test
    public void testSelect2(){
        //根据主键查询
        Category category = categoryDAO.selectByPrimaryKey(46);
        System.out.println(category);
    }


    @Test
    public void testSelect3(){
        //条件查询
        //1.创建一个Example封装  类别Category查询条件
        Example example = new Example(Category.class);
        Example.Criteria criteria = example.createCriteria();
        criteria.andEqualTo("categoryLevel",1);
        criteria.orLike("categoryName","%干%");

        List categories = categoryDAO.selectByExample(example);
        for (Category category : categories){
            System.out.println(category);
        }
    }


    @Test
    public void testSelect4(){
        //分页查询
        int pageNum = 2;
        int pageSize = 10;
        int start = (pageNum-1)*pageSize;

        RowBounds rowBounds = new RowBounds(start, pageSize);
        List categories = categoryDAO.selectByRowBounds(new Category(), rowBounds);
        for (Category category : categories){
            System.out.println(category);
        }

        //查询总记录数
        int i = categoryDAO.selectCount(new Category());
        System.out.println(i);
    }


    @Test
    public void testSelect5(){
        //带条件分页查询
        //条件
        Example example = new Example(Category.class);
        Example.Criteria criteria = example.createCriteria();
        criteria.andEqualTo("categoryLevel",1);
        //分页
        int pageNum = 2;
        int pageSize = 6;
        int start = (pageNum-1)*pageSize;
        RowBounds rowBounds = new RowBounds(start, pageSize);

        List categories = categoryDAO.selectByExampleAndRowBounds(example, rowBounds);
        for (Category category:categories){
            System.out.println(category);
        }

        //查询满足条件的总记录数
        int i = categoryDAO.selectCountByExample(example);
        System.out.println(i);

    }
}

五、如何使用tkMapper进行关联查询 所有的关联查询都可以通过多个单表操作实现
    @Test
    public void testSelect(){
        //查询用户的同时查询订单
        Example example = new Example(User.class);
        Example.Criteria criteria = example.createCriteria();
        criteria.andEqualTo("username","zhangsan");
        //根据用户名查询用户
        //1.先根据用户名查询用户信息
        List users = userDao.selectByExample(example);
        User user = users.get(0);
        //2.再根据用户id到订单表查询订单
        Example example1 = new Example(Orders.class);
        Example.Criteria criteria1 = example1.createCriteria();
        criteria1.andEqualTo("userId",user.getUserId());
        List ordersList = orderDAO.selectByExample(example1);
        //3.将查询到订单集合设置到user
        user.setOrdersList(ordersList);
        System.out.println(user);
    }
也可自定义连接查询,在DAO接口中自定义方法,创建Mapper文件 六、逆向工程

逆向工程,根据创建好的数据表,生成实体类、DAO、映射文件

1、添加逆向工程依赖

此依赖是一个mybatis的maven插件

            
                org.mybatis.generator
                mybatis-generator-maven-plugin
                1.3.5

                
                    
                        mysql
                        mysql-connector-java
                        5.1.47
                    
                    
                        tk.mybatis
                        mapper
                        3.4.4
                    
                
            
2、逆向工程配置
  • 在resources/generator目录下创建generatorConfig.xml





    


    
        
        
        

        
        
            
        

        
        
        

        
        

        
        

        
        

        
3、将配置文件设置到逆向工程的maven插件

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/873831.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号