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

做家乡网站网络营销策划书论文

做家乡网站,网络营销策划书论文,做网站系统的过程,企业业务系统有哪些介绍: 动态SQL是MyBatis提供的一种动态生成SQL语句的方式,可以根据不同的条件生成不同的SQL语句,从而实现更加灵活的查询和操作。 在MyBatis的映射文件中,可以通过使用if、choose、when、otherwise、foreach等标签来实现动态SQL…

介绍:

动态SQL是MyBatis提供的一种动态生成SQL语句的方式,可以根据不同的条件生成不同的SQL语句,从而实现更加灵活的查询和操作。

在MyBatis的映射文件中,可以通过使用if、choose、when、otherwise、foreach等标签来实现动态SQL。下面以if和foreach为例,介绍如何在MyBatis映射文件中使用动态SQL。

动态sql概述

动态SQL是指在程序运行时生成SQL语句的技术,而不是在编译期就已经确定SQL语句。动态SQL可以根据不同的条件来生成不同的SQL语句,这样可以提高程序的灵活性和可扩展性。

动态SQL一般是通过一些程序库或框架实现的,比较常见的有JDBC、Hibernate、MyBatis等。在这些框架中,可以使用占位符或参数来动态生成SQL语句,从而实现灵活的查询和更新操作,同时也可以避免SQL注入等安全问题。

动态SQL一般用于需要根据条件动态生成SQL语句的情况,比如搜索和过滤功能、动态排序、动态分页等。但是,动态SQL也可能会增加系统的复杂度和性能开销,需要谨慎使用。

动态sql使用

if: 可以根据变量值控制语句块的执行

<select id="getUserList" parameterType="map" resultType="User">SELECT * FROM user<where><if test="name != null">AND name = #{name}</if><if test="age != null">AND age = #{age}</if></where>
</select>

foreach标签:用于动态生成IN操作符后面的值列表

<select id="getUserList" parameterType="map" resultType="User">select<include refid="Base_Column_List" />from t_user where uid in <foreach collection="uids" item="uid" separator=",">#{uid}</foreach>
</select>

MyBatis中#与$的区别

  • #:#是理SQL,预编译处理,将传入的参数值替换成?占位符,然后使用PreparedStatement对象执行SQL语句。使用#可以有效防止SQL注入攻击。
  • $:$是占位符传参, 预处字符串替换,外在形式,$传参不带引号,.$传参存在SQL注入,#传参自带引号,将传入的参数值直接替换到SQL语句中。使用$可以灵活地构造SQL语句,但也可能会导致SQL注入攻击。

MyBatis中的模糊查询有三种形式:

1. 使用%通配符进行模糊查询:

<select id="getUserByNameLike" parameterType="java.lang.String"resultType="com.example.User">SELECT * FROM user WHERE name LIKE CONCAT('%', #{name}, '%')
</select>

2. 使用_通配符进行模糊查询:

<select id="getUserByNameLike" parameterType="java.lang.String"resultType="com.example.User">SELECT * FROM user WHERE name LIKE CONCAT('_', #{name}, '_')
</select>

3. 使用正则表达式进行模糊查询:

<select id="getUserByNameLike" parameterType="java.lang.String"resultType="com.example.User">SELECT * FROM user WHERE name REGEXP #{name}
</select>

MyBatis中的结果映射 

MyBatis中的结果映射是指将查询结果与Java对象之间进行映射的过程。MyBatis支持多种结果映射方式,包括自动映射和手动映射。其中,自动映射是根据结果集中列名与Java对象中属性名之间的对应关系进行映射,而手动映射则需要通过编写映射配置文件来指定查询结果中的列名与Java对象中属性名之间的对应关系。

Mybatis的分页原理

在MyBatis内部定义了一个拦截器接口,其中一个关键的方法就是intercept,从而实现拦截 来,我们看看这个接口的定义 分页插件的原理就是使用MyBatis提供的插件接口,实现自定义插件,在插件的拦截方法内,拦截待执行的SQL,然后根据设置的dialect(方言),和设置的分页参数,重写SQL ,生成带有分页语句的SQL,执行重写后的SQL,从而实现分页

插件分页

Mybatis提供了一个插件PageHelper,可以方便地进行分页查询。使用PageHelper只需要在查询方法前调用PageHelper.startPage方法,然后就可以进行分页查询了。

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>mybatis01</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><name>mybatis01 Maven Webapp</name><!-- FIXME change it to the project's website --><url>http://www.example.com</url><properties><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target></properties><dependencies><!-- ********************** junit单元测试依赖 ********************** --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version>
<!--      <scope>test</scope>--></dependency><!-- ********************** Java Servlet API  ********************** --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.0</version><scope>provided</scope></dependency><!-- ********************** Mybatis依赖 ********************** --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.5</version></dependency><!-- ********************** Mybatis的分页依赖********************** --><dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId><version>5.1.2</version></dependency><!-- ********************** Mysql JDBC驱动 ********************** --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.44</version></dependency><!-- **********************  日志配置  ********************** --><!--记得修改mybatis.cfg.xml添加如下内容--><!--<setting name="logImpl" value="LOG4J2"/>--><!--核心log4j2jar包--><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.9.1</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>2.9.1</version></dependency><!--web工程需要包含log4j-web,非web工程不需要--><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-web</artifactId><version>2.9.1</version></dependency></dependencies><build><finalName>mybatis01</finalName><resources><!--解决mybatis-generator-maven-plugin运行时没有将XxxMapper.xml文件放入target文件夹的问题--><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource><!--解决mybatis-generator-maven-plugin运行时没有将jdbc.properites文件放入target文件夹的问题--><resource><directory>src/main/resources</directory><includes><include>jdbc.properties</include><include>*.xml</include></includes></resource></resources><plugins><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.2</version><dependencies><!--使用Mybatis-generator插件不能使用太高版本的mysql驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.44</version></dependency></dependencies><configuration><overwrite>true</overwrite></configuration></plugin><plugin><artifactId>maven-clean-plugin</artifactId><version>3.1.0</version></plugin><!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging --><plugin><artifactId>maven-resources-plugin</artifactId><version>3.0.2</version></plugin><plugin><artifactId>maven-compiler-plugin</artifactId><version>3.8.0</version></plugin><plugin><artifactId>maven-surefire-plugin</artifactId><version>2.22.1</version></plugin><plugin><artifactId>maven-war-plugin</artifactId><version>3.2.2</version></plugin><plugin><artifactId>maven-install-plugin</artifactId><version>2.5.2</version></plugin><plugin><artifactId>maven-deploy-plugin</artifactId><version>2.8.2</version></plugin></plugins></build>
</project>
mybatis.cfg.xml 配置文件 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!-- 引入外部配置文件 --><properties resource="jdbc.properties"/><settings><setting name="logImpl" value="LOG4J2"/></settings><!-- 别名 --><typeAliases><typeAlias type="com.Kissship.model.Book" alias="Book"/></typeAliases><plugins><!-- 配置分页插件PageHelper, 4.0.0以后的版本支持自动识别使用的数据库 --><plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin></plugins><!-- 配置mybatis运行环境 --><environments default="development"><environment id="development"><!-- type="JDBC" 代表使用JDBC的提交和回滚来管理事务 --><transactionManager type="jdbc"/><!-- mybatis提供了3种数据源类型,分别是:POOLED,UNPOOLED,JNDI --><!-- POOLED 表示支持JDBC数据源连接池 --><!-- UNPOOLED 表示不支持数据源连接池 --><!-- JNDI 表示支持外部数据源连接池 --><dataSource type="POOLED"><property name="driver"value="${jdbc.driver}"/><property name="url"value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></dataSource></environment></environments><mappers><mapper resource="com/Kissship/mapper/BookMapper.xml"/></mappers>
</configuration>
PageBean的分页工具类 
package com.zhnaghao.utils;import javax.servlet.http.HttpServletRequest;
import java.io.Serializable;
import java.util.Map;/*** @author zhnaghao* @site www.zhnaghao.com* @company s公司* @create 2023-08-15-15:42*/
public class PageBean implements Serializable {private static final long serialVersionUID = 2422581023658455731L;//页码private int page=1;//每页显示记录数private int rows=10;//总记录数private int total=0;//是否分页private boolean isPagination=true;//上一次的请求路径private String url;//获取所有的请求参数private Map<String,String[]> map;public PageBean() {super();}//设置请求参数public void setRequest(HttpServletRequest req) {String page=req.getParameter("page");String rows=req.getParameter("rows");String pagination=req.getParameter("pagination");this.setPage(page);this.setRows(rows);this.setPagination(pagination);this.url=req.getContextPath()+req.getServletPath();this.map=req.getParameterMap();}public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}public Map<String, String[]> getMap() {return map;}public void setMap(Map<String, String[]> map) {this.map = map;}public int getPage() {return page;}public void setPage(int page) {this.page = page;}public void setPage(String page) {if(null!=page&&!"".equals(page.trim()))this.page = Integer.parseInt(page);}public int getRows() {return rows;}public void setRows(int rows) {this.rows = rows;}public void setRows(String rows) {if(null!=rows&&!"".equals(rows.trim()))this.rows = Integer.parseInt(rows);}public int getTotal() {return total;}public void setTotal(int total) {this.total = total;}public void setTotal(String total) {this.total = Integer.parseInt(total);}public boolean isPagination() {return isPagination;}public void setPagination(boolean isPagination) {this.isPagination = isPagination;}public void setPagination(String isPagination) {if(null!=isPagination&&!"".equals(isPagination.trim()))this.isPagination = Boolean.parseBoolean(isPagination);}/*** 获取分页起始标记位置* @return*/public int getStartIndex() {//(当前页码-1)*显示记录数return (this.getPage()-1)*this.rows;}/*** 末页* @return*/public int getMaxPage() {int totalpage=this.total/this.rows;if(this.total%this.rows!=0)totalpage++;return totalpage;}/*** 下一页* @return*/public int getNextPage() {int nextPage=this.page+1;if(this.page>=this.getMaxPage())nextPage=this.getMaxPage();return nextPage;}/*** 上一页* @return*/public int getPreivousPage() {int previousPage=this.page-1;if(previousPage<1)previousPage=1;return previousPage;}@Overridepublic String toString() {return "PageBean [page=" + page + ", rows=" + rows + ", total=" + total + ", isPagination=" + isPagination+ "]";}
}
 BookDto 
package com.zhagnhao.Dto;import com.zhagnhao.model.Book;/*** @author zhagnhao* @site www.zhagnhao.com* @company s公司* @create 2023-08-15-15:42*/
public class BookDto extends Book {private float max;private float min;public float getMax() {return max;}public void setMax(float max) {this.max = max;}public float getMin() {return min;}public void setMin(float min) {this.min = min;}
}
BookMapper.xml  
<!-- 分页查询的动态SQL--><select id="BookListPager" resultType="java.util.Map" parameterType="java.util.Map"> 
select * from 
t_mvc_book
where bname like
concat(concat('%',#{bname}),'%')
</select>

BookMapper接口中增加以下代码:

List<Map> BookListPager(Map map);


在创建的对象接口中增加以下代码:

List<Map> BookListPager(Map map, PageBean pageBean);


在接口实现类中增加以下代码:

   @Overridepublic List<Map> BookListPager(Map map, PageBean pageBean) {if (pageBean != null &&  pageBean.isPagination()){PageHelper.startPage(pageBean.getPage(),pageBean.getRows());}List<Map> list = bookMapper.BookListPager(map);if(pageBean != null && pageBean.isPagination()){PageInfo pageInfo = new PageInfo(list);System.out.println("页码:"+pageInfo.getPageNum());System.out.println("页大小:"+pageInfo.getPageSize());System.out.println("总记录:"+pageInfo.getTotal());pageBean.setTotal(pageInfo.getTotal()+"");}return list;}
Demo1测试
    @Testpublic  void BookList(){Map map = new HashMap();map.put("bname","圣墟");PageBean pageBean = new PageBean();//第几页pageBean.setPage(1);//显示多少数据pageBean.setRows(10);bookBiz.BookListPager(map,pageBean);

总结:

总之,MyBatis通过映射和动态SQL的方式,为我们提供了非常灵活和高效的数据库访问解决方案,可以帮助我们快速开发高质量的Java应用程序。

http://www.ds6.com.cn/news/10611.html

相关文章:

  • wordpress 文章 置顶网站内部优化有哪些内容
  • 网站制作网站建设推广平台 赚佣金
  • app的网站域名网站要怎么创建
  • 微信音乐做mp3下载网站优化推广关键词
  • 建一个小型的购物网站服务器一年要多少钱媒体发稿公司
  • 电商网站开发哪家好三只松鼠口碑营销案例
  • 福州网站开发公司seo优化点击软件
  • 建一个收费网站百度收录查询代码
  • 什么视频网站可以做链接《新闻联播》 今天
  • 江苏屹峰建设网站怎么做网站卖产品
  • 站长论坛成都最好的seo外包
  • 上海给政府机关做网站开发 万seo公司优化
  • 有个印度做网站的天天找我为什么sem的工资都不高
  • wordpress删除时间石家庄百度快照优化排名
  • 成都注册网站公司宁德市人社局
  • 专业购物网站建设百度怎么做广告推广
  • 乐搜做网站站长工具查询入口
  • 高唐做网站建设的公司seo网站分析报告
  • 佛山seo郑州网络优化实力乐云seo
  • 响水做网站价格网址查询ip地址
  • 网站的内容包括什么百度一下就知道官方网站
  • 郴州市委官网奉节县关键词seo排名优化
  • 想在拼购网站做产品网站推广工具
  • 网站建设推广代理软文发稿网
  • 宿迁网站建设开发优化服务平台
  • 医院做网站的好处aso优化贴吧
  • 滨湖区知名做网站选哪家百度做广告怎么收费
  • 宣传片制作网站外链工具软件
  • 单位网站建设费用账务处理口碑营销策略有哪些
  • 爱墙 网站怎么做推广引流app