一、项目依赖

本项目是基于mybatis3.4.6版本实现的,用到的jar包如下

二、项目结构解析

三、配置文件解析

四、mapper文件解析

<?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"> <mapper namespace="pojo.User"><!--这里直接写实体类的路径可以保证唯一性-->
<!--结果集映射-->
<resultMap id="BaseResultMap" type="pojo.User">
<result column="ID" property="id" jdbcType="VARCHAR"/>
<result column="NAME" property="name" jdbcType="VARCHAR"/>
<result column="PHONE" property="phone" jdbcType="VARCHAR"/>
<result column="EMAIL" property="email" jdbcType="VARCHAR"/>
<result column="QQ" property="qq" jdbcType="VARCHAR"/>
<result column="COMPANY" property="company" jdbcType="VARCHAR"/>
<result column="PROFESSION" property="profession" jdbcType="VARCHAR"/>
</resultMap> <!--list查询-->
<select id="listUser" resultMap="BaseResultMap">
select * from T_USER
</select> <!--新增-->
<insert id="addUser" parameterType="pojo.User">
insert into T_USER (ID, NAME, PHONE,EMAIL,QQ,COMPANY,PROFESSION)
values
(#{id},#{name},#{phone},#{email},#{qq},#{company},#{profession})
</insert> <!--删除-->
<delete id="deleteUser" parameterType="java.lang.String">
delete from T_USER where ID = #{id}
</delete> <!--单条查询-->
<select id="getUser" parameterType="java.lang.String" resultType="pojo.User">
select * from T_USER where id= #{id}
</select> <!--更新-->
<update id="updateUser" parameterType="pojo.User">
update T_USER
<set>
<if test="name != null">
NAME = #{name,jdbcType=VARCHAR},
</if>
<if test="phone != null">
PHONE = #{phone,jdbcType=VARCHAR},
</if>
<if test="email != null">
EMAIL = #{email,jdbcType=TIMESTAMP},
</if>
<if test="qq != null">
QQ = #{qq,jdbcType=TIMESTAMP},
</if>
<if test="company != null">
COMPANY = #{company,jdbcType=VARCHAR},
</if>
<if test="profession != null">
PROFESSION = #{profession,jdbcType=VARCHAR},
</if>
</set>
where id=#{id}
</update>
</mapper>

参数解析

  • parameterType:要求输入参数的类型
  • resultType:输出的类型
  • resultMap:输出的结果对象,应用与复杂数据的场景,可将查询到的数据映射到一个可自定义的数据集中去。

小结

parameterType

  就是用来在 SQL 映射文件中指定输入参数类型的,可以指定为基本数据类型(如 int、float 等)、包装数据类型(如 String、Interger 等)以及用户自己编写的 JavaBean 封装类

resultType

  resultType 是用来指定数据库返回的信息对应的 Java 的数据类型。

#{}

  在传统的 JDBC 的编程中,占位符用 “?” 来表示,然后再加载 SQL 之前按照 “?” 的位置设置参数。而 “#{}” 在 MyBatis 中也代表一种占位符,该符号接受输入参数,在大括号中编写参数名称来接受对应参数。当 “#{}” 接受简单类型时可以用 value 或者其他任意名称来获取。

${}

  在 SQL 配置中,有时候需要拼接 SQL 语句(例如模糊查询时),用 “#{}” 是无法达到目的的。在 MyBatis 中,“${}” 代表一个 “拼接符号” ,可以在原有 SQL 语句上拼接新的符合 SQL 语法的语句。使用 “${}” 拼接符号拼接 SQL ,会引起 SQL 注入,所以一般不建议使用 “${}”。

PS: <select> 标签对中 SQL 语句的 “${}” 符号,表示拼接 SQL 串,将接受的参数内容不加任何修饰地拼接在 SQL 中,“${}” 符号中的内容也只能是对应的变量。(例子:%${goodsNameLike}%,%要写在外面)

MyBatis 使用场景

  通过上面的入门程序,不难看出在进行 MyBatis 开发时,我们的大部分精力都放在了 SQL 映射文件上。在对 SQL 优化要求比较高,或是项目需求或业务经常变动时,我们使用MyBatis。

MyBatis 的特点

  就是以 SQL 语句为核心的不完全的 ORM(关系型映射)框架。与 Hibernate 相比,Hibernate 的学习成本比较高,而 SQL 语句并不需要开发人员完成,只需要调用相关 API 即可。这对于开发效率是一个优势,但是缺点是没办法对 SQL 语句进行优化和修改。而 MyBatis 虽然需要开发人员自己配置 SQL 语句,MyBatis 来实现映射关系,但是这样的项目可以适应经常变化的项目需求。

五、测试类解析

//1、根据 mybatis-config.xml 配置的信息得到 sqlSessionFactory
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//2、然后根据 sqlSessionFactory 得到 session
SqlSession session = sqlSessionFactory.openSession();
//3、这里调用session对象的相关方法调用 sql 语句来进行数据库交互,此处举查询单条记录的例子
User user = session.selectOne("getUser", "BF0001");
System.out.println("查询T_USER表数据===开始===");
System.out.println("查询到的记录为:" + user.toString());
System.out.println("查询T_USER表数据===结束===");
//4、提交修改
session.commit();
//5、关闭 session

MyBatis学习(二)代码实战的更多相关文章

  1. (原创)mybatis学习二,spring和mybatis的融合

    mybatis学习一夯实基础 上文介绍了mybatis的相关知识,这一节主要来介绍mybaits和spring的融合 一,环境搭建 1,jar包下载,下载路径为jar包 2,将包导入到java工程中 ...

  2. MyBatis学习(二)---数据表之间关联

    想要了解MyBatis基础的朋友可以通过传送门: MyBatis学习(一)---配置文件,Mapper接口和动态SQL http://www.cnblogs.com/ghq120/p/8322302. ...

  3. MyBatis学习(二)

    前言 昨天的博客简单的记录了MyBatis的起源.作用.配置以及一个简单的查询例子.写到一半的时候,觉得已经学会了MyBatis,可是全写完的时候才发现,如果多个参数查询,如何表的名字与类字段名不一样 ...

  4. mybatis学习二

    Mybatis缓存1:缓存的概念    当用户频繁查询某些固定 的数据时,第一次将这些数据从数据库查询出来,保存在缓存中(内存,高速磁盘)中    当下次用户再次查询这些数据时,不用再通过数据库查询, ...

  5. mybatis学习二 全局配置文件常用配置

    全局配置文件的详细解析可以参考mybatis的中文参考文档 1.全局配置文件中内容1.1 <transactionManager/> type 属性可取值1.1.1 JDBC,事务管理使用 ...

  6. mybatis 学习二 conf xml 配置信息

    xml映射配置文件      这个xml文件主要包括一下节点信息      * properties 属性      * settings 设置      * typeAliases 类型命名     ...

  7. MyBatis学习(二):与Spring整合(非注解方式配置MyBatis)

    搭建SpringMVC的-->传送门<-- 一.环境搭建: 目录结构: 引用的JAR包: 如果是Maven搭建的话,pom.xml的配置如下: <?xml version=" ...

  8. mybatis 学习二 MyBatis简介与配置MyBatis+Spring+MySql

    1.2.2建立MySql数据库 在C:\Program Files\MySQL\MySQL Server 5.7\bin下面: 首先连接MySQL:        mysql  -u root -p ...

  9. MyBatis 学习二之简单练习巩固

    1.新建一个maven项目并在pom.xml中添加依赖 2.项目架构   配置文件:SqlMapConfig.xml <?xml version="1.0" encoding ...

  10. java mybatis学习二

    <select id="find1" parameterType="java.util.HashMap" resultType="com.xxx ...

随机推荐

  1. 你想了解的JDK 10版本更新都在这里

    「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...

  2. 【论文总结】MapReduce论文

    摘要: MR是啥:编程模型,用户只需编写Map,Reduce两个函数,系统完成分布式计算 MR系统是啥:在大量普通计算机上实现并行化计算,系统只关心如何分割数据.大规模集群的调度.集群容错.集群通信 ...

  3. 6. 二十不惑,ObjectMapper使用也不再迷惑

    一滴水,用显微镜看,也是一个大世界.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习.关注公众 ...

  4. 起源seo为何要做seo培训

    http://www.wocaoseo.com/thread-91-1-1.html 焦大,在2010年末左右开始接触seo,2011年3月份正式开始做seo,到如今做seo已经3年了,实话说我没有其 ...

  5. 领导给了一堆无序杂乱的数据,我写了个Python自动化脚本

    这个问题算是群友答疑.如果说同事或者老板给你一堆这样的数据,你估计会抓狂,该怎么处理呢? 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. ...

  6. 初学WebGL引擎-BabylonJS:第8篇-阴影网格与活动

    [playground]-shadows(阴影) 源码 var createScene = function () { var scene = new BABYLON.Scene(engine); / ...

  7. Python学习—Anaconda详细 下载、安装与使用,以及如何创建虚拟环境,不仅仅只有安装步骤哦

    上一期我们介绍了Python.Pycharm.Anaconda三者之间的关系以及使用,这一期主要详细介绍如何在Windows上下载和安装工具Anaconda,然后使用其自带的conda管理不同项目的虚 ...

  8. C#发送邮件三种方法,Localhost,SMTP,SSL-SMTP

    C#发送邮件三种方法,Localhost,SMTP,SSL-SMTP 通过.Net FrameWork 2.0下提供的“System.Net.Mail”可以轻松的实现,本文列举了3种途径来发送: 1. ...

  9. 索引对单表查询的影响(Cost和consistent gets)

    前提:使用system账户登录sql plus. 建表: SQL> create table t2 as select * from dba_objects; 表已创建. 已用时间: 00: 0 ...

  10. 20190926-02Redis五大数据类型之Set 000 028