1.题目

  1. 模糊查询 like
    查询表中name为2个字的同学信息
    查询表中姓张的同学的所有信息
  2. 范围查询
    查询表中年龄在20~24岁之间同学的信息
  3. 综合查询:查询名为张某,年龄在30岁以下的所有信息
  4. 以上查询均用vo作为传值对象

2.在pom.xml中导入需要的jar包

<dependencies><!-- mybatis核心包 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.3.0</version></dependency><!-- mysql驱动包 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.40</version></dependency><!-- junit测试包 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><!-- 日志文件管理包 --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.12</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.12</version></dependency></dependencies>

3.新建一个pojo类叫做User与数据库的列名对应

package com.jl.pojo;import java.io.Serializable;
public class User implements Serializable {private int id;private String username;private int age;public User() {}public User(int id, String username, int age) {this.id = id;this.username = username;this.age = age;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '\'' +", age=" + age +'}';}

4.新建一个vo类叫做UserVo需要传递的参数

package com.jl.vo;
public class UserVo {private String firstName;private String name;private int max;private int min;private int age;public String getFirstName() {return firstName;}public void setFirstName(String firstName) {this.firstName = firstName;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getMax() {return max;}public void setMax(int max) {this.max = max;}public int getMin() {return min;}public void setMin(int min) {this.min = min;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public UserVo() {}public UserVo(String firstName, String name, int max, int min, int age) {this.firstName = firstName;this.name = name;this.max = max;this.min = min;this.age = age;}@Overridepublic String toString() {return "UserVo{" +"firstName='" + firstName + '\'' +", name='" + name + '\'' +", max=" + max +", min=" + min +", age=" + age +'}';}
}

5.配置mybatis的配置文件

  • 在resources文件夹下新建映射文件夹mapper,在mapper文件夹下面创建一个UserMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jl.pojo.User"><!--这里是写你的pojo-->
<!--    查询表中name为2个字的同学信息-->
<!--    sql:SELECT *FROM USER WHERE username LIKE '__'--><select id="findByName" parameterType="com.jl.vo.UserVo" resultType="com.jl.pojo.User">select *from user where username like #{name}</select>
<!--    查询表中姓张的同学的所有信息-->
<!--    sql:SELECT *FROM USER WHERE username LIKE '张%'--><select id="findByFirstName" parameterType="com.jl.vo.UserVo" resultType="com.jl.pojo.User">select *from user where username like #{firstName}</select>
<!--    查询表中年龄在20~24岁之间同学的信息-->
<!--    查询表中年龄在20~24岁之间同学的信息--><select id="findByAge" parameterType="com.jl.vo.UserVo" resultType="com.jl.pojo.User">select *from user where age between #{min} and #{max}</select>
<!--    综合查询:查询名为张某,年龄在30岁以下的所有信息-->
<!--    sql:SELECT *FROM USER WHERE username LIKE '张%' AND age <=30--><select id="find" parameterType="com.jl.vo.UserVo" resultType="com.jl.pojo.User">SELECT *FROM USER WHERE username LIKE #{firstName} AND age &lt;=#{age}</select></mapper>
  • 在resources文件夹下新建mysql.properties文件,存储数据库连接信息
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/mybatis?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
jdbc.username=root
jdbc.password=root
  • 在resources文件夹下创建mybatis-config.xml文件,存储mybatis配置信息
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><properties resource="mysql.properties"/><settings><!--全局性设置懒加载。如果设为‘false’,则所有相关联的都会被初始化加载,默认值为false--><setting name="lazyLoadingEnabled" value="true"/><!--当设置为‘true’的时候,懒加载的对象可能被任何懒属性全部加载。否则,每个属性都按需加载。默认值为true--><setting name="aggressiveLazyLoading" value="false"/></settings><typeAliases><!-- 其实就是将bean的替换成一个短的名字--><typeAlias type="com.jl.pojo.User" alias="User"/></typeAliases><!--对事务的管理和连接池的配置--><environments default="development"><environment id="development"><transactionManager type="JDBC"></transactionManager><dataSource type="POOLED"><!--POOLED:使用Mybatis自带的数据库连接池来管理数据库连接--><property name="driver" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></dataSource></environment></environments><!--mapping文件路径配置--><mappers><mapper resource="mapper/UserMapper.xml"/></mappers></configuration>

6.新建一个dao包,创建一个BaseDao类,用于封装获取sqlSession的方法

package com.jl.dao;import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;
import java.io.Reader;
public class BaseDao {protected SqlSession getSqlSession(){String fileName = "mybatis-config.xml";Reader reader = null;try {reader = Resources.getResourceAsReader(fileName);} catch (IOException e) {e.printStackTrace();}SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);SqlSession sqlSession = sqlSessionFactory.openSession();//数据库连接会话,非jsp的session,切勿搞混。return sqlSession;}
}

7.新建一个UserDao继承这个BaseDao然后就可以直接使用它的方法

package com.jl.dao;import com.jl.pojo.User;
import com.jl.vo.UserVo;
import org.apache.ibatis.session.SqlSession;import java.util.List;/*** @author Lee* @date 2019-05-07 17:53*/
public class UserDao extends BaseDao {/***查询表中name为2个字的同学信息* @param userVo* @return*/public List<User> findByName(UserVo userVo){SqlSession sqlSession = this.getSqlSession();List<User> userList=sqlSession.selectList("findByName",userVo);sqlSession.close();return userList;}/*** 查询表中姓张的同学的所有信息* @param userVo* @return*/public List<User> findByFirstName(UserVo userVo){SqlSession sqlSession = this.getSqlSession();List<User> userList=sqlSession.selectList("findByFirstName",userVo);sqlSession.close();return userList;}/*** 查询表中年龄在20~24岁之间同学的信息* @param userVo* @return*/public List<User> findByAge(UserVo userVo){SqlSession sqlSession = this.getSqlSession();List<User> userList=sqlSession.selectList("findByAge",userVo);sqlSession.close();return userList;}/*** 综合查询:查询名为张某,年龄在30岁以下的所有信息* @param userVo* @return*/public List<User> find(UserVo userVo){SqlSession sqlSession = this.getSqlSession();List<User> userList=sqlSession.selectList("find",userVo);sqlSession.close();return userList;}}

8. 在test包里面创建一个UserTest

package com.jl;import com.jl.dao.UserDao;
import com.jl.pojo.User;
import com.jl.vo.UserVo;
import org.junit.Test;import java.util.List;public class UserTest {UserDao userDao = new UserDao();UserVo userVo = new UserVo();User user = new User();/*** 查询表中name为2个字的同学信息*/@Testpublic void findByName() {userVo.setName("__");List<User> userList = userDao.findByName(userVo);System.out.println(userList);}/*** 查询表中姓张的同学的所有信息*/@Testpublic void findByFirstName() {userVo.setFirstName("张%");List<User> userList = userDao.findByFirstName(userVo);System.out.println(userList);}/*** 查询表中年龄在20~24岁之间同学的信息*/@Testpublic void findByAge() {userVo.setMin(20);userVo.setMax(24);List<User> userList = userDao.findByAge(userVo);System.out.println(userList);}/*** 综合查询:查询名为张某,年龄在30岁以下的所有信息*/@Testpublic void find(){userVo.setFirstName("张%");userVo.setAge(30);List<User> userList = userDao.find(userVo);System.out.println(userList);}
}

使用mybatis的Vo对象简单完成需求查询相关推荐

  1. 遇到MapStruct后,再也不手写PO,DTO,VO对象之间的转换了

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:腾讯推出高性能 RPC 开发框架 个人原创100W+访问量博客:点击前往,查看更多 介绍 在工作中,我们经常要进 ...

  2. springboot封装统一查询对象进行多条件查询案例(mybatis和mybatis-plus+反射两种版本)

    文章目录 mybatis版本: 通用查询接口 封装辅助查询类: 通用controller: 自定义注解 controller service mapper测试 mybatis-plus实现版本 ent ...

  3. 【MyBatis】Mybatis的java对象名和数据库表名不同怎么办?

    java对象名 和 数据库表名 不同怎么办? 提问: 我想请教一下,在使用mybatis的注解的时候,如果出现java对象名和数据库表名不同的时候,如何写mapper. 比如,UserAccount是 ...

  4. Spring项目中,为什么要区分PO对象,VO对象,DTO对象?有什么作用?

    相信大家在平时项目中都会用到PO对象,DTO对象,VO对象,但是为什么要区分这几种对象呢?他们分别有什么作用呢? PO对象是指的持久化对象,PO中的字段是和数据库表中的字段一一对应的,一般是DAO层或 ...

  5. uniCloud云函数 云对象简单使用

    云对象简单使用 今天看了下文档 发现多了个 云对象 目前需要下载 3.4.0及以上版本 目前为 alpha版本 个人觉得云对象 让我们更加的能 贴近面向对象 https://www.dcloud.io ...

  6. @RequestBody接收Json参数 | 用自定义注解对Vo对象中Date类型日期格式校验

    标题太长有木有?主要是为了把问题描述清楚,免得进错文章. 问题描述 昨天测试的同事测试接口的时候,测试出来一个Date类型校验问题. 要求输入的日期格式是:yyyy-MM-dd HH:mm:ss,Vo ...

  7. Mybatis四大核心对象及四大内置对象

    一.MyBatis四大核心对象 MyBatis完成一次数据库操作需要经过的步骤,如下: 1.加载配置文件 2.获取SqlSessionFactoryBuiler对象 3.通过SqlSessionFac ...

  8. 第二版:JAVA对象对比VO对象找出差异值结合swagger-ApiModel无需自定义注解

    创建历史记录表存全量 变更前后数据 CREATE TABLE `ltx_change_info` (`ID` varchar(60) NOT NULL COMMENT '主键',`CHANGE_MSG ...

  9. 【MyBatis框架】高级映射-多对多查询

    多对多查询 1.需求 查询用户及用户购买商品信息. 2.sql语句 查询主表是:用户表 关联表:由于用户和商品没有直接关联,通过订单和订单明细进行关联,所以关联表: orders.orderdetai ...

  10. Mybatis入门系列之(二)——查询入门案例

    本文将介绍简单的select查询 整个工程结构如下: 1. 需求,一个简单的权限控制需求:用户-角色-权限,表关系如下图所示 建表语句 CREATE TABLE sys_user(id BIGINT ...

最新文章

  1. mysql dba系统学习(5)二进制日志binlog之一
  2. Windows 10每天定时执行脚本
  3. QUIC DataChannels的第一步
  4. python找房源_Python租房信息分析!找到最适合自己的房源信息!
  5. isnull mysql_mysql isnull用法讲解
  6. html控制图的宽,用JointJS做一个简单的功能控制图
  7. 如何成为软件架构师?
  8. 华为路由器ws5200虚拟服务器,想处理垃圾路由吗?那就先入手这款华为WS5200路由器吧...
  9. 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_04-vuejs研究-vuejs基础-v-model指令...
  10. 次坐标从0开始_全站仪使用方法及坐标计算,详细讲解!建议收藏!
  11. javaweb开发后端常用技术_java后端开发需要掌握什么技术
  12. NXP恩智浦智能车四轮组-- 2.电磁检波电路、运放模块原理图
  13. .bat文件和脚本文件
  14. 有道云笔记不同步_有道云笔记不能无法同步解决教程
  15. mongodb 两小时入门
  16. spark:报错com.esotericsoftware.kryo.KryoException: Buffer underflow.
  17. vite 设置启动Network 为本地ip
  18. oracle括号不区分中英,oracle查询不含括号及不含指定字符的方法
  19. HTML页面循环遍历数据,不用JSTL标签
  20. 计算机管理不小心删除了e盘,【J.C.X】计算机的D盘和E盘突然消失. 小编帮你找回来...

热门文章

  1. 【雅思大作文考官范文】——第四篇: 'power of advertising' essay
  2. 详解物理学四大神兽————麦克斯韦妖
  3. 基于jsp+java+ssm的大学生缴费系统-计算机毕业设计
  4. HDU 2042 不容易系列之二
  5. ajax oracle数据库数据类型,ajax连接oracle数据库数据
  6. 如何用python爬虫薅羊毛_怎么写网络爬虫来薅羊毛?
  7. 0527基于51单片机的防酒驾检测系统设计Proteus仿真
  8. 【数据压缩】作业1:分析浊音清音爆破音的时域和频域特性以及RGB熵的计算
  9. cpu功耗排行_AMD、Intel CPU处理器性能、功耗及性价比排行(更新中)
  10. 南科大副教授“跳槽”到深圳中学引热议!大学老师不香了吗?