MyBatis
MyBatis
杨林伟
像火箭科学家一样思考!
展开
-
MyBatisPlus代码生成工具(史上操作最简单版本)
文章目录1. 引言2. 效果演示 Step1:首先配置数据库信息 Step2:运行项目,生成代码功能1: 生成代码到指定的目录功能2: 生成代码到target功能3: 生成zip3. 其它细节1. 引言最近在网上找MyBatisPlus代码生成工具类,找到的都不太满意,所以自己重写并开源到了Github,有兴趣的小伙伴可以下载来参考:地址:https://github.com/ylw-github/MP-Generator里面的代码实现细节不用过多的关注,只需要知道怎么配置和使用就可以了,本文来原创 2020-11-19 17:42:41 · 1037 阅读 · 0 评论 -
MyBatis如何解决内容被转义
使用<![CDATA[ ]]>来解决,使用例子如下: <![CDATA[AND DATE_FORMAT(e.create_time, '%Y-%m-%d')>= DATE_FORMAT(#{p.startTime,jdbcType=VARCHAR}, '%Y-%m-%d')]]>注意:<![CDATA[ ]]>是XML语法,在CDATA内部的所有内容都会被解析器忽略。...原创 2020-10-28 10:14:09 · 1521 阅读 · 0 评论 -
Mybatis引用静态常量或者枚举类型
语法规则:${@path$subClass@Attr.getValueMethod}例子:<select id="listModelsToProTps" resultType="com.voyageone.ecerp.model.wms.WmsBtShipmentModel"> SELECT * from wms_bt_shipment${partition} WHERE port =${@com.voyageone.ecerp.domain.constant.wm原创 2020-10-28 10:08:24 · 1260 阅读 · 0 评论 -
MyBatisPlus AND OR 联合使用
原生的SQL:select * from t_user where sex='male' and ((name=ylw and age=18) or (name=dumas and age=20));MyBatisPlus 写法:QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();userQueryWrapper.eq("sex","male");queryWrapper.and(wrapper ->原创 2020-09-22 15:22:08 · 4863 阅读 · 2 评论 -
MyBatis逆向生成工具EasyCode(很强大)
EasyCode 可以帮我们连接数据库,一键生成entity、dao、service、serviceimpl、controller、mapper,如下图:下面开始讲解安装教程:1.首先打开偏好设置,Plugins模块,搜索EasyCode:2.安装并重启IDEA,如下图:3.连接mysql数据库,右键IDEA界面的Database页:4.新建MyQL连接:5.连接数据库6.选中表,然后选择EasyCode -> Generate Code:7.选择要生成的模块、位置以及要原创 2020-05-11 18:03:16 · 1826 阅读 · 2 评论 -
MyBatis逆向工程源码
源码已上传至Github,地址:https://github.com/ylw-github/MyBatis-Generator原创 2019-09-10 18:20:00 · 319 阅读 · 0 评论 -
SpringBoot之myabtis逆向工程
参考:https://blog.csdn.net/weixin_42195284/article/details/83685857原创 2019-09-10 16:10:42 · 290 阅读 · 0 评论 -
65MyBatis - MyBatis中 # 与 $ 的区别
#{}是预编译处理,${}是字符串替换。mybatis在处理 #{ } 时,会将sql中的 # { } 替换为?号,调用PreparedStatement的set方法来赋值。mybatis在处理 $ { } 时,就是把 ${ } 替换成变量的值。使用**#{ }**可以有效的防止SQL注入,提高系统安全性。原因在于:预编译机制。预编译完成之后,SQL的结构已经固定,即便用户输入非...原创 2019-04-12 11:38:08 · 247 阅读 · 0 评论 -
64MyBatis - bind元素
在进行模糊查询编写SQL语句的时候,如果使用“${}”进行字符串拼接,则无法防止SQL注入问题;如果使用concat函数进行拼接,则只针对MySQL数据库有效;如果使用的是Oracle数据库,则要使用连接符号“||”。这样,映射文件中的 SQL 就要根据不同的情况提供不同形式的实现,这显然是比较麻烦的,且不利于项目的移植。为此,MyBatis提供了< bind>元素来解决这一问题...原创 2019-04-12 11:13:05 · 980 阅读 · 0 评论 -
63MyBatis - foreach元素(复习)
在实际开发中,有时可能会遇到这样的情况:假设在一个客户表中有1000条数据,现在需要将id值小于100的客户信息全部查询出来,这要怎么做呢?有人也许会说,“我可以一条一条查出来”,那如果查询200、300甚至更多也一条一条查吗?这显然是不可取的。有的人会想到,可以在Java方法中使用循环,将查询方法放在循环语句中,然后通过条件循环的方式查询出所需的数据。这种查询方式虽然可行,但每执行一次循环语...原创 2019-04-12 10:54:38 · 1068 阅读 · 0 评论 -
62MyBatis - set元素
在Hibernate中,如果想要更新某一个对象,就需要发送所有的字段给持久化对象,然而实际应用中,大多数情况下都是更新的某一个或几个字段。如果更新的每一条数据都要将其所有的属性都更新一遍,那么其执行效率是非常差的。有没有办法让程序只更新需要更新的字段呢?为了解决上述情况中的问题,MyBatis中提供了< set>元素来完成这一工作。< set>元素主要用于更新操作,其...原创 2019-04-12 10:44:00 · 941 阅读 · 0 评论 -
61MyBatis - where、trim元素
映射文件中编写的 SQL 后面都加入了“where 1=1”的条件,那么到底为什么要这么写呢?如果将 where 后“1=1”的条件去掉,那么 MyBatis 所拼接出来的SQL将会如下所示。select * from t_customer where and username like concat('%',?, '%')上面SQL中,where后直接跟的是and,这在运行时肯定会报SQL...原创 2019-04-12 10:34:46 · 543 阅读 · 0 评论 -
60MyBatis - choose、when、otherwise元素
在使用< if>元素时,只要test属性中的表达式为true,就会执行元素中的条件语句,但是在实际应用中,有时只需要从多个选项中选择一个去执行。例如下面的场景:“当客户名称不为空,则只根据客户名称进行客户筛选;当客户名称为空,而客户职业不为空,则只根据客户职业进行客户筛选。当客户名称和客户职业都为空,则要求查询出所有电话不为空的客户信息。”此种情况下,使用< if>...原创 2019-04-12 10:24:17 · 986 阅读 · 1 评论 -
59MyBatis - if元素(复习)
前面有讲过,可以参考:动态SQL的 if标签在MyBatis中,元素是最常用的判断语句,它类似于Java中的if语句,主要用于实现某些简单的条件选择。在实际应用中,我们可能会通过多个条件来精确地查询某个数据。例如,要查找某个客户的信息,可以通过姓名和职业来查找客户,也可以不填写职业直接通过姓名来查找客户,还可以都不填写而查询出所有客户,此时姓名和职业就是非必须条件。类似于这种情况,在MyB...原创 2019-04-12 10:11:45 · 920 阅读 · 0 评论 -
58MyBatis - 动态SQL元素(复习)
动态SQL是MyBatis的强大特性之一,MyBatis3采用了强大的基于OGNL的表达式来完成动态SQL,它消除了之前版本中需要了解的大多数元素,使用不到原来一半的元素就能完成所需要的工作。MyBatis动态SQL中的主要元素,如下图:...原创 2019-04-12 09:40:58 · 480 阅读 · 0 评论 -
36MyBatis -逆向工程
MyBatis逆向工程使用官方网站的Mapper自动生成工具mybatis-generator-core-1.3.2来生成po类和Mapper映射文件1.导入逆向工程2.导入逆向工程到eclipse中如下图方式进行导入:3.修改配置文件在generatorConfig.xml中配置Mapper生成的详细信息,如下图:注意修改以下几点:修改要生成的数据库表pojo文件所...原创 2019-04-08 11:39:15 · 272 阅读 · 0 评论 -
35MyBatis - Dao开发的两种方式
MyBatis Dao开发的两种方式两种dao的实现方式:原始dao的开发方式使用Mapper代理形式开发方式a)直接配置Mapper代理b)使用扫描包配置Mapper代理现在有个需求:实现根据用户id查询实现根据用户名模糊查询添加用户创建pojo:public class User { private int id; private String usernam...原创 2019-04-08 11:26:37 · 421 阅读 · 0 评论 -
34MyBatis - MyBatis整合Spring
MyBatis整合Spring整合思路SqlSessionFactory对象应该放到spring容器中作为单例存在。传统dao的开发方式中,应该从spring容器中获得sqlsession对象。Mapper代理形式中,应该从spring容器中直接获得mapper的代理对象。数据库的连接以及数据库连接池事务管理都交给spring容器来完成。整合需要的jar包spring的jar包...原创 2019-04-08 11:06:53 · 360 阅读 · 0 评论 -
33MyBatis - 关联查询(一对多查询)
MyBatis一对多查询案例商品订单数据模型一对多查询案例:查询所有用户信息及用户关联的订单信息。用户信息和订单信息为一对多关系。sql语句:SELECT u.id, u.username, u.birthday, u.sex, u.address, o.id oid, o.number, o.createtime, o.noteFROM `user` uLE...原创 2019-04-08 10:43:42 · 597 阅读 · 0 评论 -
32MyBatis - 关联查询(一对一查询)
MyBatis的一对一查询商品订单数据模型一对一查询需求:查询所有订单信息,关联查询下单用户信息。注意:因为一个订单信息只会是一个人下的订单,所以从查询订单信息出发关联查询用户信息为一对一查询。如果从用户信息出发查询用户下的订单信息则为一对多查询,因为一个用户可以下多个订单。sql语句:SELECT o.id, o.user_id userId, o.number, o.cr...原创 2019-04-08 10:34:43 · 328 阅读 · 0 评论 -
31MyBatis - 动态SQL的 foreach标签
MyBatis动态SQL的foreach标签向sql传递数组或List,mybatis使用foreach解析,如下:根据多个id查询用户信息SELECT * FROM user WHERE id IN (1,10,24)步骤一: 改造QueryVo如下图在pojo中定义list属性ids存储多个用户id,并添加getter/setter方法步骤二: UserMapper.xml添加sq...原创 2019-04-03 17:40:28 · 375 阅读 · 0 评论 -
30MyBatis - 动态SQL的 sql片段
MyBatis动态SQL的 sql片段Sql中可将重复的sql提取出来,使用时用include引用即可,最终达到sql重用的目的。把上面例子中的id, username, birthday, sex, address提取出来,作为sql片段,如下:<!-- 根据条件查询用户 --><select id="queryUserByWhere" parameterType="u...原创 2019-04-03 17:34:35 · 1865 阅读 · 0 评论 -
29MyBatis - 动态SQL的 where标签
动态SQL的where标签接上一篇上一篇的sql还有where 1=1 这样的语句,可以使用where标签进行改造。改造UserMapper.xml,如下<!-- 根据条件查询用户 --><select id="queryUserByWhere" parameterType="user" resultType="user"> SELECT id, usernam...原创 2019-04-03 17:29:55 · 422 阅读 · 0 评论 -
28MyBatis - 动态SQL的 if标签
MyBatis动态SQL的if标签引出问题1)UserMapper.xml配置sql,如下:<!-- 根据条件查询用户 --><select id="queryUserByWhere" parameterType="user" resultType="user"> SELECT id, username, birthday, sex, address FROM `...原创 2019-04-03 17:24:34 · 996 阅读 · 0 评论 -
27MyBatis - 输出映射之ResultMap
MyBatis输出映射之ResultMapResultMap概述resultType可以指定将查询结果映射为pojo,但需要pojo的属性名和sql查询的列名一致方可映射成功。如果sql查询字段名和pojo的属性名不一致,可以通过resultMap将字段名和属性名作一个对应关系 ,resultMap实质上还需要将查询结果映射到pojo对象中。resultMap可以实现将查询结果映射为复杂类...原创 2019-04-03 17:14:04 · 365 阅读 · 0 评论 -
26MyBatis - 输入映射和输出映射
输入映射和输出映射parameterType(输入类型)传递简单类型使用#{}占位符,或者${}进行sql拼接。传递pojo对象Mybatis使用ognl表达式解析对象字段的值,#{}或者${}括号中的值为pojo属性名称。传递pojo包装对象开发中通过可以使用pojo传递查询条件。查询条件可能是综合的查询条件,不仅包括用户查询条件还包括其它的查询条件(比如查询用户信息...原创 2019-04-03 17:01:44 · 277 阅读 · 0 评论 -
25MyBatis - SqlMapConfig.xml配置文件
SqlMapConfig.xml配置文件配置内容SqlMapConfig.xml中配置的内容和顺序如下:properties(属性)settings(全局配置参数)typeAliases(类型别名)typeHandlers(类型处理器)objectFactory(对象工厂)plugins(插件)environments(环境集合属性对象)------environment(环...原创 2019-04-03 15:34:14 · 307 阅读 · 0 评论 -
24MyBatis - Mapper动态代理方式
Mapper动态代理方式开发规范Mapper接口开发方法只需要程序员编写Mapper接口(相当于Dao接口),由Mybatis框架根据接口定义创建接口的动态代理对象,代理对象的方法体同上边Dao接口实现类方法。Mapper接口开发需要遵循以下规范:Mapper.xml文件中的namespace与mapper接口的类路径相同。Mapper接口方法名和Mapper.xml中定义的每个sta...原创 2019-04-03 14:59:42 · 376 阅读 · 0 评论 -
23MyBatis - 原始Dao开发方法
MyBatis原始Dao开发方法原始Dao开发方法需要程序员编写Dao接口和Dao实现类。映射文件编写映射文件如下:(也可以使用入门程序完成的映射文件)<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...原创 2019-04-03 14:43:25 · 303 阅读 · 0 评论 -
22MyBatis - MyBatis相关API
MyBatis相关APISqlSession的使用范围SqlSession是一个面向用户的接口,sqlSession中定义了数据库操作方法,如:查询、插入、更新、删除等。SqlSession通过SqlSessionFactory创建。SqlSessionFactory是通过SqlSessionFactoryBuilder进行创建。每个线程都应该有它自己的SqlSession实例。SqlS...原创 2019-04-03 14:32:46 · 306 阅读 · 0 评论 -
21MyBatis - 再谈MyBatis优势
再谈MyBatis优势Mybatis解决jdbc编程的问题数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库连接池可解决此问题。解决:在SqlMapConfig.xml中配置数据连接池,使用连接池管理数据库链接。Sql语句写在代码中造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码。解决:将Sql语句配置在XXXXmapper.x...原创 2019-04-03 14:23:46 · 335 阅读 · 0 评论 -
20MyBatis - MyBatis删除操作
MyBatis删除操作根据用户id删除用户使用的sqlDELETE FROM `user` WHERE id = 47映射文件在User.xml配置文件中添加如下内容: <!-- 删除用户 --> <delete id="deleteUserById" parameterType="int"> delete from user where id=#{i...原创 2019-04-03 14:15:11 · 8268 阅读 · 0 评论 -
19MyBatis - MyBatis修改操作
MyBatis修改操作根据用户id修改用户名使用的sql:UPDATE `user`SET username = ‘赵云’ WHERE id = 26映射文件在User.xml配置文件中添加如下内容:<!-- 更新用户 --><update id="updateUserById" parameterType="cn.itcast.mybatis.pojo.User"...原创 2019-04-03 14:10:56 · 4261 阅读 · 0 评论 -
18MyBatis - MyBatis添加操作
MyBatis添加操作实现添加用户使用的sql:INSERT INTO `user`(username,birthday,sex,address)VALUES (‘黄忠’,‘2016-07-26’,‘1’,‘三国’)映射文件在User.xml配置文件中添加如下内容: <!-- 保存用户 --> <insert id="saveUser" parameterTyp...原创 2019-04-03 14:03:09 · 549 阅读 · 0 评论 -
17MyBatis - MyBatis模糊查询
MyBatis实现根据用户名模糊查询用户查询sql:SELECT * FROM user WHERE username LIKE '%王%'方法一映射文件:在User.xml配置文件中添加如下内容: <!-- 如果返回多个结果,mybatis会自动把返回的结果放在list容器中 --> <!-- resultType的配置和返回一个结果的配置一样 --> &...原创 2019-04-03 11:49:15 · 444 阅读 · 0 评论 -
16MyBatis - MyBatis根据id查询
MyBatis根据id查询用户使用的SQL:SELECT * FROM `user`WHERE id = 1映射文件在user.xml中添加select标签,编写sql:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"...原创 2019-04-03 11:32:20 · 1409 阅读 · 0 评论 -
15MyBatis - MyBatis环境搭建
MyBatis环境搭建mybatis下载mybaits的代码由github.com管理下载地址:https://github.com/mybatis/mybatis-3/releasesmybatis-3.2.7.jar mybatis的核心包lib文件夹 mybatis的依赖包所在mybatis-3.2.7.pdf mybatis使用手册创建java工程如下图使用之前创建...原创 2019-04-03 11:20:28 · 303 阅读 · 0 评论 -
14MyBatis - MyBatis介绍
MyBatis介绍MyBatis概述MyBatis 本是apache的一个开源项目iBatis, 它是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。Mybatis通过xml或注解的方式将要执行的各种state...原创 2019-04-03 10:59:44 · 327 阅读 · 0 评论