当前位置: 首页 > news >正文

东莞微信网站建设信息网站建设公司江西

东莞微信网站建设信息,网站建设公司江西,wordpress媒体库创建文件夹,宁波led网站建设文章目录 一、什么是MyBatis二、Mybatis入门案例三、配置SQL提示四、数据库连接池四、lombok五、mybatis基础操作5.1 根据id删除5.2 预编译SQL5.3 新增员工5.4 更新员工5.5 查询员工#xff08;用于页面回显#xff09;5.6 条件查询 七、XML映射文件八、动态SQL8.1 if语句8.2… 文章目录 一、什么是MyBatis二、Mybatis入门案例三、配置SQL提示四、数据库连接池四、lombok五、mybatis基础操作5.1 根据id删除5.2 预编译SQL5.3 新增员工5.4 更新员工5.5 查询员工用于页面回显5.6 条件查询 七、XML映射文件八、动态SQL8.1 if语句8.2 foreach语句8.3 sql/include语句 小结 一、什么是MyBatis MyBatis是一款优秀的持久层框架用于简化JDBC的开发 二、Mybatis入门案例 使用MyBatis查询所有用户的数据 三、配置SQL提示 四、数据库连接池 数据库连接池是个容器负责分配管理数据库连接Connection 它允许应用程序重复使用一个现有的数据库连接而不是在重新建立一个 释放空间时间超过最大空闲时间的连接来避免因为没有释放连接而引起的数据库连接遗漏 如果没有连接池每次访问数据库时候需要开启一个新的连接用完需要关闭比较浪费资源有了数据库连接池程序在初始化的时候会在这个容器中创建一定量的连接对象后面客户端在访问数据库时候会在连接池中来获取连接用完之后再归还就可以做到连接的复用而不用每次都新建一个在关闭 数据库连接池的优势 资源重用提升系统响应速度避免数据库连接遗漏 标准接口DataSource 官方提供的数据库连接池接口由第三方组织实现此接口功能获取连接 Connection getConnection() throws SQLException Springboot默认Hikari追光者 Druid德鲁伊 Druid连接池是阿里巴巴开源的数据库连接池项目功能强大性能优秀是Java语言最好的数据库连接池之一 四、lombok lombok是一个使用的Java类库能够通过注解的形式自动生成构造器getter/setterequalshashcodetostring等方法并可以自动化生成日志变量简化Java开发提高效率 注解作用Getter/Setter为所有的属性提供get/set方法ToString给雷自动生成toString方法。EqualsAndHashCode根据类所拥有的非静态字段自动重写equals方法和hashCode方法Data注解在类生成setter/getter、equals、canEqual、hashCode、toString方法如为final属性则不会为该属性生成setter方法。NoArgsConstructor生成无参的构造方法。AllArgsConstructor生成包含类中所有字段的构造方法。 需要在pom.xml中加入lombok依赖 五、mybatis基础操作 准备工作 准备数据表emp创建一个新的springboot工程引入起步依赖mybatismysql驱动lombok配置文件中引入数据库的连接信息创建Emp实体类采用驼峰命名法准备Mapper接口EmpMapper 5.1 根据id删除 在mapper接口中写入代码如下 Mapper public interface EmpMapper { // 根据id删除Delete(delete from mybatis.emp where id #{id})public void delect(Integer id); }在测试类中调用如下 SpringBootTest //整合单元测试的类 class SpringbootMybatisApplicationTests {Autowiredprivate EmpMapper empMapper;Testpublic void test(){int delete empMapper.delect(17);System.out.println(delect)} }返回值为1受影响的行数 5.2 预编译SQL 性能更高 更安全防止SQL注入 只需要编译一次后面直接把参数传进去就可以执行所以性能更高 5.3 新增员工 在mapper接口中写入代码如下 // 新增员工Insert(insert mybatis.emp(username, name, gender, image, job, entrydate, dept_id, create_time, update_time) values (#{username},#{name},#{gender},#{image},#{job},#{entrydate},#{deptId},#{createTime},#{updateTime}))public void insert(Emp emp);在测试类中测试如下 useGeneratedKeys是否要获取到返回来的数据 keyProperty返回来的数据往那个地方封装 5.4 更新员工 在mapper接口中写入代码如下 // 更新员工Update(update mybatis.emp set username #{username},name #{name},gender #{gender},image #{image} ,job #{job},entrydate #{entrydate},dept_id #{dept_id},create_time #{createTime},update_time #{updateTime})public void update(Emp emp);在测试类中测试如下 5.5 查询员工用于页面回显 在mapper接口中写入代码如下 // 根据id查询员工Select(select * from mybatis.emp where id #{})public Emp getById(Integer id);在测试类中测试如下 运行结果如下 但是运行结果中其中dept_idcreat_timeupdate_time 并没有结果 原因是因为没有进行数据封装 开启mybatis自动映射开关 在application配置文件中 5.6 条件查询 // 条件查询员工Select(select * from mybatis.emp where name like concat(%,#{name},%) and gender #{gender} and entrydate between #{begin} and #{end} order by update_time desc )public ListEmp list(String name , Short gender , LocalDate begin , LocalDate end);运行结果 七、XML映射文件 规范 XML映射文件的名称与Mapper接口名称保持一致并且将XML映射文件和Mapper接口放置在相同包下同包同名XML映射文件的namespace属性为Mapper接口全限定名一致XML映射文件中sql语句的id与Mapper接口中的方法名一致并保持返回类型一致 以xml定义sql语句例如 先加上xml约束 ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd!-- nampespace 绑定Mapper接口的全名-- mapper namespacecom.itzhangxx.mapper.EmpMapper!-- 条件查询员工--select idlist resultTypecom.itzhangxx.Pojo.Empselect * from mybatis.emp where name like concat(%,#{name},%) and gender #{gender} andentrydate between #{begin} and #{end} order by update_time desc/select /mapper八、动态SQL 8.1 if语句 随着用户的输入或外部条件的变化而变化的SQL语句称为动态SQL mapper namespacecom.itzhangxx.mapper.EmpMapper!-- 条件查询员工--select idlist resultTypecom.itzhangxx.Pojo.Empselect *from mybatis.empwhereif testname ! nullname like concat(%, #{name}, %)/ifif testgender ! nulland gender #{gender}/ifif testbegin ! null and end ! nulland entrydate between #{begin} and #{end}/ifwhereorder by update_time desc/select /mapper这样就可以动态的满足需求的再进行SQL的查找 优化上面更新员工代码 原SQL Update(update mybatis.emp set username #{username},name #{name},gender #{gender},image #{image} ,job #{job},entrydate #{entrydate},dept_id #{dept_id},create_time #{createTime},update_time #{updateTime})public void update(Emp emp);改造后如下 update idupdate2update mybatis.empsetif testusername ! nullusername #{username},/ifif testname ! nullname #{name},/ifif testgender ! nullgender #{gender},/ifif testimage ! nullimage #{image},/ifif testjob ! nulljob #{job},/ifif testentrydate ! nullentrydate #{entrydate},/ifif testdeptId ! nulldept_id #{dept_id},/ifif testupdateTime ! nullupdate_time #{updateTime},/if /set/updateif用于判断条件是否成立使用test属性进行条件判断如果条件为true则拼接SQLwhere只用于在子元素有内容的情况下才插入where子句而且会自动取出子句的开头的AND 或 ORset动态的在行首插入set关键字会删除额外的逗号用于update中 8.2 foreach语句 如果想要删除多个员工数据的话就可以使用foreach语句进行遍历 例如 delete iddeleteByIddelete from mybatis.emp where id inforeach collectionids itemid open( separator, close)#{id}/foreach/delete测试如下传入11121314 Testpublic void testDeleteById(){ListInteger ids Arrays.asList(11,12,13,14);empMapper.deleteById(ids);return ;}然后实际执行的sql语句如下 delete from mybatis.emp where id in(11,12,13,14)属性含义collection要遍历的集合item遍历出来的元素separator分隔符open遍历开始前拼接的片段close遍历结束后的拼接的片段 8.3 sql/include语句 在查找中不建议使用select * 会降低代码效率但是输入全部字段的话也会有大量重复的所以 使用sql定义相同的SQL并且设定唯一标识使用include调用这个唯一标识即可 实现效果如下 sql idselectAllselect id, username, password, name, gender, image, job, entrydate, dept_id, create_time, update_timefrom mybatis.emp/sql!-- 条件查询员工--select idlist resultTypecom.itzhangxx.Pojo.Empinclude refidselectAll/includewhereif testname ! nullname like concat(%, #{name}, %)/ifif testgender ! nulland gender #{gender}/ifif testbegin ! null and end ! nulland entrydate between #{begin} and #{end}/if/whereorder by update_time desc/select重点规范 XML映射文件的名称与Mapper接口名称保持一致并且将XML映射文件和Mapper接口放置在相同包下同包同名XML映射文件的namespace属性为Mapper接口全限定名一致XML映射文件中sql语句的id与Mapper接口中的方法名一致并保持返回类型一致 语句含义if用于判断条件是否成立使用test属性进行条件判断如果条件为true则拼接SQLwhere只用于在子元素有内容的情况下才插入where子句而且会自动取出子句的开头的AND 或 ORset动态的在行首插入set关键字会删除额外的逗号用于update中foreach按照规范进行遍历sql使用sql定义相同的SQL并且设定唯一标识include使用中按照唯一标识进行调用定义的SQL 小结 写本文主要是为了分享我的学习过程也是给自己记个笔记哪里忘记了回来再看一眼也可以很快的回想起来
http://www.pierceye.com/news/456411/

相关文章:

  • 浙江网站建设而梦幻西游源码论坛
  • 网站建设类织梦模板做网站 对方传销
  • 做外贸比较好的网站莱芜信息港房产网
  • 胶州建设局网站做电影网站怎样赚钱
  • 物流的网站模板免费下载网站你懂我意思正能量晚上下载
  • 做外贸的阿里巴巴网站是哪个更好网络宣传网站建设价格
  • 网站入侵怎么做网站开发相关英文单词
  • 实验室网站建设方案阳西网络问政平台官网
  • 岳阳网站开发建设网站域名注册申请
  • 营销型网站建设ppt网站程序开发后怎么上线
  • 鞍山做网站哪家好制作网站技术
  • 中国建设银行山西省分行网站wordpress永久免费
  • 设计网络网站做国外网站 国外人能看到吗
  • 融安有那几个网站做的比较好的创建网站大约
  • 浙江联科网站建设选择宁波seo优化公司
  • 上海建站网络科技app营销策略有哪些
  • 怎么检查网站有没有被挂马知乎做笔记的网站
  • 温岭网站制作爱网站查询
  • 徐州学习网站建设影视公司组织架构
  • 怎么看别人的网站有没有做301蓝色扁平化企业网站
  • 郑州建站模板网络程序员
  • 健身顾问在哪些网站做推广北京网络推广外包公司排行
  • 天津网站开发工资水平建设网站如何写文案
  • 做a漫画在线观看网站注册个免费网站
  • 杭州网站设计网页长安东莞网站推广
  • 福州网站建设软件怎样上传自己的网站
  • wordpress手机站如何做wordpress 查询文章
  • 企业专业网站设计公wordpress打开慢
  • 网站制作方案怎么做青岛住房和城乡建设部网站
  • 织梦系统做的网站忘记登录密码百家 主题 wordpress