Spring Boot 中使用 tkMapper( 三 )

PS:其实还有根据自定义条件修改或删除的方法(使用方法参考带条件的查询示例)
tkMapper 常用方法之查询

  • selectAll:查所有
  • selectByPrimaryKey:根据主键查所有
  • selectByExample:根据条件查所有
  • selectByRowBounds:分页查询
  • selectByExampleAndRowBounds:带条件的分页查询
  • selectCount:查总记录数
  • selectCountByExample:根据条件查总记录数
@RunWith(SpringRunner.class)@SpringBootTest(classes = SpringbootTkMapperDemoApplication.class) //启动类.classpublic class UserDaoTest {@Autowiredprivate UserDao userDao; //如果爆红线不用管(或Dao接口上添加@Repository注解)@Testpublic void testSelectAll() {/*** selectAll:查询所有*/List<User> users = userDao.selectAll();for (User user : users) {System.out.println(user);}}@Testpublic void testSelectByPrimaryKey() {/*** selectByPrimaryKey:根据主键查询*/User user = userDao.selectByPrimaryKey(10);System.out.println(user);}@Testpublic void testSelectByExample() {//封装查询条件Example example = new Example(User.class);Example.Criteria criteria = example.createCriteria();//条件信息(根据Criteria对象的各种方法进行设置)criteria.andEqualTo("userRealname", "lin");// criteria.orEqualTo("userPwd", "123");// criteria.andLike("userName", "%i%");/*** selectByPrimaryKey:根据条件查询(PS:根据条件修改或删除与此类似)*注意:需要设置查询条件信息,并传入条件对象*/List<User> users = userDao.selectByExample(example);for (User user : users) {System.out.println("========> " + user);}}@Testpublic void testSelectByRowBounds() {//分页查询信息int pageNum = 2; //第几页int pageSize = 3; //每页显示多少行int start = (pageNum - 1) * pageSize; //起始显示的下标RowBounds rowBounds = new RowBounds(start, pageSize);/*** selectByRowBounds:查所有的分页查询*/List<User> users = userDao.selectByRowBounds(new User(), rowBounds);for (User user : users) {System.out.println("========> " + user);}/*** selectCount:查询总记录数*/int count = userDao.selectCount(new User());System.out.println("========> count = " + count);}@Testpublic void testSelectByExampleAndRowBounds() {//封装查询条件Example example = new Example(User.class);Example.Criteria criteria = example.createCriteria();criteria.andEqualTo("userRealname", "lin");//分页查询信息int pageNum = 2; //第几页int pageSize = 2; //每页显示多少行int start = (pageNum - 1) * pageSize; //起始显示的下标RowBounds rowBounds = new RowBounds(start, pageSize);/*** selectByExampleAndRowBounds:带条件的分页查询*/List<User> users = userDao.selectByExampleAndRowBounds(example, rowBounds);for (User user : users) {System.out.println("========> " + user);}/*** selectCountByExample:根据条件查询总记录数*/int count = userDao.selectCountByExample(example);System.out.println("========> count = " + count);}}tkMapper 关联/多表查询
说明:所有的关联/多表查询都可以由多个单表查询组成
关联/多表查询实现方式:
方式一:多次使用单表查询,然后封装数据
方式二:自定义查询方法和 SQL
情景:基于以上的用户表,新添加一个订单表 orders,订单表中有订单信息,但是也有用户 id;
要求:在查询用户表的同时还要查询出用户的订单信息,这就涉及到了两张表的查询 。
具体业务要求:根据用户名查询用户的所有信息,包括订单信息 。
数据准备新建订单表 orders:
DROP TABLE IF EXISTS `orders`;CREATE TABLE `orders`(`order_id` int(11) NOT NULL AUTO_INCREMENT,`user_id` int(11) NOT NULL,`receiver_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,`receiver_mobile` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,`receiver_address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,PRIMARY KEY (`order_id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact;INSERT INTO `orders` VALUES (1, 1, 'luis', '13344445555', '湖北武汉');

经验总结扩展阅读