1 Mybatis
1 使用Maven导入mybatis依赖
在pom.xml中写上一下代码:这些代码的查找可在https://mvnrepository.com/open-source网站上寻找,导入mybatis时要注意导入mysql还有版本的控制做到相适应。
<dependencies>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
</dependencies>
有一点要注意的是mysql在6.0以上版本有改动优化,因为视频中出现的是2017年所以遵守视频中的版本。
2 mybatis开发流程
创建配置mybatis-config.xml配置文件-->>>创建db.properties配置文件配置数据库参数--->>>创建实体类--->>>在resource中创建mapper文件夹并在下面创建usersMapper.xml映射文件,在里面编写查询语句--->>>创建监听器和sqlSession工具类--->>>创建UsesDao编写查询方法--->>>创建Servlet编写增删改查。整体结构如下图所示

3 动态SQL语句
在userMapper.xml文件中编写的sql代码:
<!--
mapper 用于定义一个映射配置文件的根节点
namespace属性是用来配置命名空间,主要进行session级别的缓存管理
命名空间默认情况下,使用我们当前操作的实体类的全路径
-->
<mapper namespace="cn.uestc.entity.Users">
<select id="findUsers" resultType="cn.uestc.entity.Users">
select * from users
</select>
<select id="findById" resultType="cn.uestc.entity.Users">
select * from users where id = #{id}
</select>
</mapper>
在UsersDAO中相对映:通过相匹配select中的id来匹配具体调用哪一个查询语句
public List<Users> findAll() {
try {
list = getSession().selectList("findUsers");
} catch (Exception e) {
e.printStackTrace();
} finally {
sqlSession.close();
}
return list;
}
/**
* 查询单个用户根据编号
* @return
*/
public Users findById(Integer id) {
try {
user = getSession().selectOne("findById", id);
} catch (Exception e) {
e.printStackTrace();
} finally {
sqlSession.close();
}
return user;
}
但这样做有很大的局限性,当我们要查询的情况发生改变时就要增加一个查询语句,当要查询的情况比较多时查询语句也会不断的增加,这样使得代码越来越难以管理,因此推出动态SQL语句使得查询语句可以动态发生改变。下面一段代码就直接代替了上面的两种查询情况:
<mapper namespace="cn.uestc.entity.Users">
<select id="findUsers" resultType="cn.uestc.entity.Users">
select * from users
<if test="id != null">
where id = #{id}
</if>
</select>
</mapper>
此时要注意#{id}有两种获取方法:HashMap和JavaBean,当select中的id和查询方法一对应时是通过map集合获取的,但在此时一个id="findUsers"对应着两个不同的方法那么此时就无法通过map集合获得了而要通过JavaBean,但在实体类中已经有id的get、set方法为什么不对那,那是因为在传递参数的时候直接传入了id,而采用JavaBean获取值时是通过对象获得的,即namespace中的对象类型,也就意味着此时要传递一个对象方可,那么有两种方法:
public Users findById(Integer id) {
user.setId(id);
try {
user = getSession().selectOne("findUsers", user);
} catch (Exception e) {
e.printStackTrace();
} finally {
sqlSession.close();
}
return user;
}
或者 上面一种方法需要先new 一个对象但是不用再创建构造方法,下面的方法直接利用有参构造,需要先有对应的构造方法
public Users findById(Integer id) {
user.setId(id);
try {
user = getSession().selectOne("findUsers", new Users(id));
} catch (Exception e) {
e.printStackTrace();
} finally {
sqlSession.close();
}
return user;
}
0
1 Mybatis的更多相关文章
- 【分享】标准springMVC+mybatis项目maven搭建最精简教程
文章由来:公司有个实习同学需要做毕业设计,不会搭建环境,我就代劳了,顺便分享给刚入门的小伙伴,我是自学的JAVA,所以我懂的.... (大图直接观看显示很模糊,请在图片上点击右键然后在新窗口打开看) ...
- Java MyBatis 插入数据库返回主键
最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User ...
- [原创]mybatis中整合ehcache缓存框架的使用
mybatis整合ehcache缓存框架的使用 mybaits的二级缓存是mapper范围级别,除了在SqlMapConfig.xml设置二级缓存的总开关,还要在具体的mapper.xml中开启二级缓 ...
- 【SSM框架】Spring + Springmvc + Mybatis 基本框架搭建集成教程
本文将讲解SSM框架的基本搭建集成,并有一个简单demo案例 说明:1.本文暂未使用maven集成,jar包需要手动导入. 2.本文为基础教程,大神切勿见笑. 3.如果对您学习有帮助,欢迎各种转载,注 ...
- mybatis plugins实现项目【全局】读写分离
在之前的文章中讲述过数据库主从同步和通过注解来为部分方法切换数据源实现读写分离 注解实现读写分离: http://www.cnblogs.com/xiaochangwei/p/4961807.html ...
- MyBatis基础入门--知识点总结
对原生态jdbc程序的问题总结 下面是一个传统的jdbc连接oracle数据库的标准代码: public static void main(String[] args) throws Exceptio ...
- Mybatis XML配置
Mybatis常用带有禁用缓存的XML配置 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE ...
- MyBatis源码分析(一)开篇
源码学习的好处不用多说,Mybatis源码量少.逻辑简单,将写个系列文章来学习. SqlSession Mybatis的使用入口位于org.apache.ibatis.session包中的SqlSes ...
- (整理)MyBatis入门教程(一)
本文转载: http://www.cnblogs.com/hellokitty1/p/5216025.html#3591383 本人文笔不行,根据上面博客内容引导,自己整理了一些东西 首先给大家推荐几 ...
- MyBatis6:MyBatis集成Spring事物管理(下篇)
前言 前一篇文章<MyBatis5:MyBatis集成Spring事物管理(上篇)>复习了MyBatis的基本使用以及使用Spring管理MyBatis的事物的做法,本文的目的是在这个的基 ...
随机推荐
- Devexpress xaf BO中字段为RuleRequiredField必输字段时,文本标签默认添加*标记
BO中字段为RuleRequiredField必输字段时,文本标签默认添加*标记.需要在模型编辑器中设置,如图. 官网地址:https://docs.devexpress.com/eXpressApp ...
- Linux下mysql创建用户并设置权限,设置远程连接
为了安全考虑,OneinStack仅允许云主机本机(localhost)连接数据库,如果需要远程连接数据库,需要如下操作:打开iptables 3306端口 # iptables -I INPUT 4 ...
- Vim 添加vimgdb支持
./configure --enable-gdb --prefix=/usr --enable-multibyte --enable-fontset --enable-xim --enable-gui ...
- python selenium5 模拟点击+拖动+按照指定相对坐标拖动 58同城验证码
#!/usr/bin/python # -*- coding: UTF-8 -*- # @Time : 2019年12月9日11:41:08 # @Author : shenghao/10347899 ...
- QT Creator 使用SVN的版本号做为编译的版本信息
在使用qt Creator 开发中,如果想使用 svn 的源代码版本号来作为 build 的一个子版本号或者只是为了识别某个发布版本,与源代码的版本信息对应起来,可以方便调试对应的版本代码,我们可以通 ...
- 安装笔记, caffe 、 opencv等
1. 1.1 opencv static linux mkdir build & cd build cmake .. -LH 这句话用来查看编译选项 如果不知道编译啥 可以用这个查看一下 ...
- HTML中由于DIV(块元素)浮动,导致的父元素高度塌陷问题的解决方案
费话不多说,直接上问题: 1.开始时,页面只有两个DIV的嵌套(见图) 运行结果是: 现在看运行的是正常的,但是当我设置让 class="box2" 的DIV浮动时 运行结果是这样 ...
- 如何在Marketing Cloud里创建extension field扩展字段
首先在Marketing Cloud里找到创建扩展字段的tile入口,搜索关键字extension: 这会进入Fiori应用"Custom fields",能看到系统里所有创建好的 ...
- 如何创建一个前端 React 组件并发布到 NPM
首先npm文档摆在这里: https://www.npmjs.cn/ 参考组件 https://github.com/rakuten-rex/rex-dropdownhttps://www.npmjs ...
- centos所有版本镜像下载地址
centos所有版本镜像下载地址 版本号 下载地址 更新时间 centos2.1 iso镜像下载 2.1/ 2009/8/19 1:36 centos3.1 iso镜像下载 3.1/ 2005/ ...