1,导入MyBatis使用的依赖

<dependencies><!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.6</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.46</version><scope>runtime</scope></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency></dependencies>

2,MyBatis的配置类SqlMapConfig.xml

<?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><!--配置和数据库链接相关的信息--><!--四大件驱动地址用户名密码default 默认的环境, 在这个配置文件中 可以创建多个环境,如果有多个的时候需要指定默认值,这个值就是下面环境的id值--><environments default="abc"><environment id="abc"><!--固定值JDBC--><transactionManager type="JDBC"></transactionManager><!--数据源 其实就是一个连接池可以使用mybatis默认的连接池POOLED--><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql:///db_shopping?useUnicode=true&amp;characterEncoding=UTF8"/><property name="username" value="root"/><property name="password" value="qishimeiyoumima"/></dataSource></environment></environments><!--配置sql语句的文件地址,生成mapper对象--><mappers><mapper resource="User.xml"></mapper></mappers></configuration>

3,pojo类User.class

public class User {private  int id;private String username;private String password;private String email;private String gender;private int flag;private int role;private String code;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 String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public int getFlag() {return flag;}public void setFlag(int flag) {this.flag = flag;}public int getRole() {return role;}public void setRole(int role) {this.role = role;}public String getCode() {return code;}public void setCode(String code) {this.code = code;}@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '\'' +", password='" + password + '\'' +", email='" + email + '\'' +", gender='" + gender + '\'' +", flag=" + flag +", role=" + role +", code='" + code + '\'' +'}';}}

4,User.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<!--namespace 命名空间对sql的statement进行分类的,我们调用这里面sql
语句的时候会使用
-->
<mapper namespace="test"><!-- id 代表当前sql语句的id,我们需要通过这个id来找到这个sql语句parameterType 代表的是参数的数据类型, mybatis内部帮我们封装了一些类型  比如 int代表的是java.lang.IntegerresultType 返回结果的全限定名称,或者是mybatis内置的类型public String person.david.mybatis.pojo.User.getId()//方法的全限定名称#{} 占位符,相当于我们在使用jdbc的时候的? ,里面写什么呢? 如果是一个参数,并且参数的类型是基本数据类型或者是字符串的时候,可以随便写但是为了方便了解是做什么或者是为了方便知道参数的含义,建议写对应的数据名字--><select id="findUserById" parameterType="int" resultType="com.qianfeng.mybatis.pojo.User">SELECT * FROM tb_user WHERE id=#{id}</select><!--当返回结果为多条的时候, resultType这里是单挑数据类型,也就是集合的泛型${} 拼接符,会将内容原样输出拼接到对应的位置,注意,如果这个参数是一个基本数据类型或者是字符串,这个地方必须填写value拼接符因为是原样输出内容,所以会存在一个很大的风险,sql注入,所以一般情况下 like会用到这个,或者是一些按照列明排序等会用到--><select id="findUserByName" parameterType="string" resultType="person.david.mybatis.pojo.User">SELECT * FROM tb_user WHERE username like '%${value}%'</select><!--insert是sql里面最特殊的一个语句,只有两种结果,一个是成功,一个是抛异常,不像update#{username}代表从user对象中获取一个名字叫username的属性(注意不是变量名),属性就是get/set方法去掉getting/set后首字母小写当参数是一个对象的时候,这里面要通过占位符的方式进行填写参数,参数的名字就是要作为参数值的属性的属性名--><insert id="insertUser" parameterType="person.david.mybatis.pojo.User">INSERT INTO tb_user (username,password,email,gender,flag,role,code) VALUES (#{username},#{password},#{email},#{gender},#{flag},#{role},#{code})</insert><!--selectKey 获取主键resultType 主键值的类型keyProperty 代表主键的值放入到参数中的哪个属性上面,比如当前期望将主键的值放到我们的user对象的id属性上面order 代表selectKey对应的sql语句的执行顺序,在下面真正的sql语句执行之前还是之后执行,此处我们需要插入数据之后才能知道结果,所以是afterSELECT LAST_INSERT_ID() 获取最后一次插入的主键,这个方法只能获取当前事物中的最后一次插入主键--><insert id="insertUser1" parameterType="person.david.mybatis.pojo.User"><selectKey resultType="int" keyProperty="id" order="AFTER">SELECT LAST_INSERT_ID()</selectKey>INSERT INTO tb_user (iusername,password,email,gender,flag,role,code) VALUES (#{username},#{password},#{email},#{gender},#{flag},#{role},#{code})</insert><insert id="insertUser2" parameterType="person.david.mybatis.pojo.TestPojo"><selectKey resultType="string" keyProperty="id" order="BEFORE">SELECT UUID()</selectKey>INSERT INTO db_test (id) VALUES (#{id})</insert><delete id="dasdasd" parameterType="string">DELETE  from db_test where id =#{id}</delete><update id="update" parameterType="person.david.mybatis.pojo.User">update tb_user set username=#{username} where id =#{id}</update></mapper>

5,测试类TestMain.class

public class TestMain {private SqlSessionFactory sqlSessionFactory;@Beforepublic void before() throws IOException {InputStream inputStream= Resources.getResourceAsStream("SqlMapConfig.xml");//将配置文件通过io流的方式打开 /WEB-INF/classessqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//创建sqlsession工厂}@Testpublic void test1() throws IOException {//如果创建对象加载sql语句//链接数据库InputStream inputStream= Resources.getResourceAsStream("SqlMapConfig.xml");//将配置文件通过io流的方式打开 /WEB-INF/classesSqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//创建sqlsession工厂//获取链接SqlSession sqlSession = sqlSessionFactory.openSession();//数据库的链接User user = sqlSession.selectOne("test.findUserById", 5);//调用sql. 参数1 的格式是 xml文件的 namespace.idSystem.err.println(user);sqlSession.close();//关闭链接}}

MyBatis的基础查询相关推荐

  1. mybatis入门基础(二)----原始dao的开发和mapper代理开发

    阅读目录 一:原始dao开发方法 二:mapper代理方法(只需要mapper接口,相当于dao接口) 承接上一篇 mybatis入门基础(一) 看过上一篇的朋友,肯定可以看出,里面的MybatisS ...

  2. mybatis多表查询出来的实体如何映射_mybatis进阶案例之多表查询

    mybatis进阶案例之多表查询 一.mybatis中表之间的关系 在数据库中,实体型之间的关系主要有如下几种: 1.一对一 如果对于实体集A中的每一个实体,实体集B中至多有一个(也可以没有)实体与之 ...

  3. mybatis入门基础----高级映射(一对一,一对多,多对多)

    一:订单商品数据模型 1.数据库执行脚本 创建数据库表代码:  查看代码 测试数据代码:  查看代码 2.数据模型分析思路 (1).每张表记录的数据内容:分模块对每张表记录的内容进行熟悉,相当于你学习 ...

  4. spring boot集成mybatis-plus——Mybatis Plus 分页查询数据(图解)

    Mybatis Plus 分页查询数据(图解)  更新时间 2023-01-01 11:58:32 大家好,我是小哈. 本小节中,我们将学习如何通过 Mybatis Plus 分页查询数据库表中的数据 ...

  5. Mybatis plus基础入门

    文章目录 1.MyBatisPlus入门案例 ✈创建数据库及表 ✈步骤一:创建SpringBoot工程 ✈步骤二:pom.xml中补全依赖 ✈步骤三:添加MP的相关配置信息 ✈步骤四:创建User实体 ...

  6. Mybatis一对多查询的两种姿势,你值得拥有(收藏就完事了)

    文章目录 数据库表准备 实例演示 方法一:联合查询ResultMap映射 方法二:子查询映射 总结 前言 最近碰到了Mybatis一对多查询的场景,在这里总结对比下常见的两种实现方式. 本文以常见的订 ...

  7. Mybatis+springMVC+分页查询+前后端代码

    Mybatis+springMVC+分页查询+前后端代码 前言 我们在公司中经常会用到分页查询,最近,我在做一个公司的任务的时候,调用外部系统时需要将结果封装成分页的数据,之前我们都是直接调用我们公司 ...

  8. mybatis入门基础(六)----高级映射(一对一,一对多,多对多)

    阅读目录 一:订单商品数据模型 二.一对一查询 三.一对多查询 四.多对多查询 回到顶部 一:订单商品数据模型 1.数据库执行脚本 创建数据库表代码: 1 CREATE TABLE items ( 2 ...

  9. 【转自】mybatis入门基础----高级映射(一对一,一对多,多对多)

    转自:http://www.cnblogs.com/selene/p/4627446.html 可参考https://blog.csdn.net/liu_yanzhao/article/details ...

最新文章

  1. React源码分析与实现(一):组件的初始化与渲染
  2. 【SpringCloud】Feigin-实例
  3. AQS.accquire
  4. 搜索推荐中的召回匹配模型综述(二):基于表示学习的深度学习方法
  5. html5清除手机页面缓存文件夹,WebView自动缓存-清除缓存
  6. 捡起JavaScript(3)
  7. Spring Boot + Jersey发生FileNotFoundException (No such file or directory)
  8. 关于CoreData的使用
  9. 模拟任务调度算法 C语言 【留学生作业】
  10. 避免在ASP.NET Core中使用服务定位器模式
  11. 乌拉、利用python实现tree命令
  12. 网络书店可行性分析报告
  13. 硅谷真假u盘测试软件,硅谷硅谷真假u盘测试
  14. 工程点点app爬虫和sign算法破解
  15. 2022年Google I/O 大会即将举行,可领取 2022 年 I/O 大会参会开发者资料徽章。
  16. (转)日期插件layDate的使用
  17. java制作闪星星,原生js实现星星闪烁效果
  18. 【网易微专业】算法原理与实践 2
  19. 计算机组成原理——总线连接方式
  20. java 日期格式化 24小时_SimpleDateFormat转换时间,12,24时间格式

热门文章

  1. PHP生成随机数的几种方法(最全)
  2. 如何在网站中安装51啦
  3. 洛谷P1244青蛙过河题解
  4. 埃博拉病毒的实验室症断
  5. omnipeek抓包(确定设备AP模式下的MAC地址+过滤)
  6. 60款酷毙了的国外名片设计作品欣赏(下篇)
  7. 冷链物流计算机控制技术,芜湖WCS仓库控制系统
  8. java web 网课_中国大学MOOCJava Web开发基础网课答案
  9. 软件测试面试题:请你分别画出 OSI 的七层网络结构图和 TCP/IP 的四层结构图?
  10. win10进入系统后只有鼠标箭头,桌面全黑(文件系统错误-2018374635)