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的事物的做法,本文的目的是在这个的基 ...
随机推荐
- 【AtCoder】ARC062
ARC062 C - AtCoDeerくんと選挙速報 / AtCoDeer and Election Report 每次看看比率至少变成多少倍能大于当前的数 然后就把两个人的票都改成那个数 #incl ...
- kindeditor的配置jsp版
1.将kindeditor资源下载下来,点击这里下载: 2.将资源解压,因为是jsp版本所以只需要保留jsp的文件即可,最终目录为下图 3.在所给的jsp的demo中做配置 注意:demo.jsp中引 ...
- S02_CH08_ ZYNQ 定时器中断实验
S02_CH08_ ZYNQ 定时器中断实验 上一章实现了PS接受来自PL的中断,本章将在ZYNQ的纯PS里实现私有定时器中断.每隔一秒中断一次,在中断函数里计数加1,通过串口打印输出. 8.1中断原 ...
- pb相关小技巧或用法
1.动态post window lwlw = w_main lw.dynamic post event ue_all(ls_no,ls_table) 2.打开隐藏窗口 IF NOT IsValid(w ...
- Myatis中的OGNL和bind标签的结合用法
1.MyBatis常用的OGNL e1 or e2 e1 and e2 e1 == e2,e1 eq e2 e1 != e2,e1 neq e2 e1 lt e2:小于 e1 lte e2:小于等于, ...
- 【QT学习笔记】二、信号槽和自定义信号槽
1. 信号槽 int main(int argc, char *argv[]) { QApplication app(argc, argv); QPushButton button("Qui ...
- JS — 事件的相关概念和DOM
JS是以事件驱动为核心的一门语言. 事件的三要素:事件源.事件.事件驱动程序. 例如: <body> <div id="box1"></div> ...
- MUI 支付案例(支付宝/微信)
首先说明一下,本文借鉴了多位博主的文章,所以会看到很多一样的代码. 写这篇博客主要目的是为了便于后期查看(不好之处,敬请留言吐槽),案例经本人测试,是可以使用的. 先上效果图 前端HTML代码: &l ...
- S/4HANA中的销售计划管理
大家好,我所在的S/4HANA Sales(SD)成都研发团队,主要负责S/4HANA里销售模块相关的标准产品研发. 作为产品研发团队,我们遵循SCRUM迭代式增量软件开发过程,以两个星期为一个迭代, ...
- ASE19团队项目alpha阶段model组 scrum8 记录
本次会议于11月12日,19时整在微软北京西二号楼sky garden召开,持续15分钟. 与会人员:Jiyan He, Kun Yan, Lei Chai, Linfeng Qi, Xueqing ...