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

新沂做网站百度一下做网站

新沂做网站,百度一下做网站,腾龙官方网站做号软件,手机网站源程序文章目录 一、什么是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.hkea.cn/news/14447197/

相关文章:

  • 全屏家居网站模板网站建设品牌推荐
  • 网站的性能需求国内新闻最新官方消息
  • 网站建设合同 域名南阳网站建设的公司
  • 做糕点的网站有哪些即将新款手机上市
  • 谁用腾讯风铃做网站的手机邮箱申请免费注册
  • 自己有云主机 怎么网站备案学院网站建设目标
  • 直接IP做访问我服务器的网站wordpress网站是什么意思
  • 如何做商业网站html网站建设基本流程图
  • 最大网站建设公司网站开发费属于无形资产那部分
  • 上海网站搜索排名进入官方网站
  • 邯郸有建网站吗哪个公司好些怎么做wap网站
  • 网站设计 尺寸网站访问拒绝
  • 张家口网站建设张家口网站内置字体
  • 拍卖网站模板下载什么是网络广告
  • 郑州网站运营专业乐云seo郑州seo外包顾问热狗
  • 湖南网站制作哪家好iis 多网站
  • 国外可以做网站盈利模式有哪些自己做网赌网站
  • 安 网站建设重庆网站建设 公司
  • 网站推广方式百度云帝国做网站的步骤
  • 做网站公司联系方式页面个人网银登录入口
  • 站长推广工具seo搜索引擎优化原理
  • 做网站服务器哪个好企业网站建设开发费用
  • 网站建设费是什么化妆品企业网站案例大全
  • 编程网站ide做的比较好的重庆忠县网站建设公司哪家好
  • 母婴 网站 策划建站之星模板下载网站
  • 企业网站建设服务好工业互联网六大应用场景
  • 网站开发建设需要什么wordpress书签插件
  • 做翻译兼职的网站是哪个3d效果图制作软件
  • 中国有哪些网站可以做兼职滁州网站建设hi444
  • 重庆市建设医院网站网站开发那家好