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

网站怎么做访问量统计/深圳推广不动产可视化查询

网站怎么做访问量统计,深圳推广不动产可视化查询,长春百度网站排名优化,中山做网站多少钱Mapper.xml映射文件中定义了操作数据库的sql&#xff0c;每个sql是一个statement&#xff0c;映射文件是mybatis的核心。 下面是mapper.xml文件实例&#xff0c;提倡放在与实体同目录下&#xff0c;文件名任意 <?xml version"1.0" encoding"UTF-8" ?…

Mapper.xml映射文件中定义了操作数据库的sql,每个sql是一个statement,映射文件是mybatis的核心。

下面是mapper.xml文件实例,提倡放在与实体同目录下,文件名任意

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- namespace属性是名称空间,必须唯一,java代码中根据名称空间调用其方法 -->
<mapper namespace="mynamespace"><!-- resultMap标签:映射实体与表 type属性:表示实体全路径名(全路径名可以使用在mybatis.xml文件中配置的别名代替)id属性:为实体与表的映射取一个任意的唯一的名字-->
<!-- 当实体属性与表字段名不相同的时候,必须书写以下对应代码当实体属性与表字段名相同的时候,以下代码可选 --><resultMap type="student" id="studentMap"><!-- id标签:映射主键属性result标签:映射非主键属性property属性:实体的属性名column属性:表的字段名  -->                         <id property="id" column="id"/><result property="name" column="name"/><result property="sal" column="sal"/></resultMap><!-- insert标签:要书写insert这么一个sql语句id属性:为insert这么一个sql语句取一个任意唯一的名字parameterType:要执行的dao中的方法的参数,如果是类的话,必须使用全路径类(全路径名可以使用在mybatis.xml文件中配置的别名代替)--><insert id="add1">insert into students(id,name,sal) values(1,'小明',7000)</insert><insert id="add2" parameterType="student">insert into students(id,name,sal) values(#{id},#{name},#{sal})</insert><!-- 根据ID查询学生如果参数不是一个实体的话,只是一个普通变量,例如:int,double,String这里的#{中间的变量名可以随便写},不过提倡就用方法的形参当实体类属性与表字段名不相同的时候,返回数据使用resultMap属性,mybatis会将查询出来的表记录和studentMap这个id所对应的映射结果相互匹配--><select id="findById" parameterType="int" resultMap="studentMap">select id,name,sal from students where id = #{anything}</select><!-- 查询所有学生 理论上resultType要写List<Student>但这里只需书写List中的类型即可,即只需书写Student的全路径名当实体类属性和表字段名一一对应相同的时候,返回数据使用resultType属性,只需要填写类的全路径名--><select id="findAll" resultType="student">select id,name,sal from students</select><!-- 更新学生 --><update id="update" parameterType="student">update students set name=#{name},sal=#{sal} where id=#{id}</update><!-- 删除学生 --> <delete id="delete" parameterType="student">delete from students where id = #{id}</delete><!-- 注意:这个insert/update/delete标签只是一个模板,在做操作时,其实是以SQL语句为核心的即在做增//改 时,insert/update/delete标签可通用,但做查询时只能用select标签我们提倡什么操作就用什么标签--> </mapper>

一、 Mapper配置的几种方法:

第一种(常用)

<mapper resource=" " />

resource指向的是相对于类路径下的目录
如:<mapper resource="sqlmap/User.xml" />

第二种

<mapper url=" " />

使用完全限定路径
如:<mapper url="file:///D:\workspace\mybatis1\config\sqlmap\User.xml" />

第三种

<mapper class=" " />

使用mapper接口类路径
如:<mapper class="cn.kang.mapper.UserMapper"/>
注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。

第四种(推荐)

<package name=""/>

注册指定包下的所有mapper接口
如:<package name="cn.kang.mapper"/>
注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。

二、POJO的映射文件

Mapper.xml映射文件中定义了操作数据库的sql,每个sql是一个statement,映射文件是mybatis的核心。

1、parameterType(输入类型)

通过parameterType指定输入参数的类型,类型可以是简单类型、hashmap、pojo的包装类型。
#{}实现的是向prepareStatement中的预处理语句中设置参数值,sql语句中#{}表示一个占位符即?。
例如:

<select id="findUserById" parameterType="int" resultType="user">select * from user where id = #{id}
</select>

使用占位符#{}可以有效防止sql注入,在使用时不需要关心参数值的类型,mybatis会自动进行java类型和jdbc类型的转换。#{}可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,#{}括号中可以是value或其它名称。
KaTeX parse error: Expected 'EOF', got '#' at position 4: {}和#̲{}不同,通过{}可以将parameterType 传入的内容拼接在sql中且不进行jdbc类型转换, 可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,{}可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,pojoparameterType{}括号中只能是value。使用不能防止sql注入,但是有时用{}不能防止sql注入,但是有时用sql{}会非常方便,如下的例子:

 <select id="selectUserByName" parameterType="string" resultType="user">select * from user where username like '%${value}%'</select>

使用#{}则传入的字符串中必须有%号,而%是人为拼接在参数中,显然有点麻烦,如果采用${}在sql中拼接为%的方式则在调用mapper接口传递参数就方便很多。

如果使用${}原始符号则必须人为在传参数中加%。
List list = userMapper.selectUserByName("%管理员%");
如果使用%${value}%则不用人为在参数中加%。
Listlist = userMapper.selectUserByName(“管理员”);

parameterType也可以传递pojo对象。Mybatis使用ognl表达式解析对象字段的值,如下例子:

<!—传递pojo对象综合查询用户信息 --><select id="findUserByUser" parameterType="user" resultType="user">select * from user where id=#{id} and username like '%${username}%'</select>

上边%${username}%中的username就是user对象中对应的属性名称。

parameterType还可以传递pojo包装对象(也就是将多个对象包装为一个对象)。开发中通过pojo传递查询条件 ,查询条件是综合的查询条件,不仅包括用户查询条件还包括其它的查询条件(比如将用户购买商品信息也作为查询条件),这时可以使用包装对象传递输入参数。
例如下面的包装对象:

public class QueryVo {private User user;private UserCustom userCustom;
}

在映射文件中的使用

<!—传递pojo包装对象综合查询用户信息 --><select id="findUserByUser" parameterType="queryVo" resultType="user">select * from user where id=#{user.id} and username like '%${user.username}%'</select>

可以看出通过使用类似java中对象访问属性的形式来进行参数传递。

parameterType也可以传递hashmap类型的参数
在xml映射文件中使用形式如下:

<select id="findUserByHashmap" parameterType="hashmap" resultType="user">select * from user where id=#{id} and username like '%${username}%'
</select>

在代码中的调用形式如下:

Public void testFindUserByHashmap()throws Exception{//获取sessionSqlSession session = sqlSessionFactory.openSession();//获限mapper接口实例UserMapper userMapper = session.getMapper(UserMapper.class);//构造查询条件Hashmap对象HashMap<String, Object> map = new HashMap<String, Object>();map.put("id", 1);map.put("username", "管理员");//传递Hashmap对象查询用户列表List<User>list = userMapper.findUserByHashmap(map);//关闭sessionsession.close();
}

这样,可以把参数以key-value的形式传给Mybatis。如果传递的map中的key和xml映射文件的sql语句中解析的key不一致,系统不会报错,但是通过key获取值为空。

2、resultType

使用resultType可以进行输出映射,只有查询出来的列名和pojo中的属性名一致,才可以映射成功。如果查询出来的列名和pojo中的属性名全部不一致,就不会创建pojo对象。但是只要查询出来的列名和pojo中的属性有一个一致,就会创建pojo对象。
resultType可以输出简单类型。例如查询用户信息的综合查询列表总数,通过查询总数和上边用户综合查询列表才可以实现分页。

<!-- 获取用户列表总数 --><select id="findUserCount" parameterType="user" resultType="int">select count(*) from user</select>

resultType可以输出pojo对象和pojo列表。当使用动态代理时,输出pojo对象和输出pojo列表在xml映射文件中定义的resultType是一样的,而生成的动态代理对象中是根据mapper方法的返回值类型确定是调用selectOne(返回单个对象调用)还是selectList (返回集合对象调用 )。

3、resultMap

mybatis中可以使用resultMap完成高级输出结果映射。如果查询出来的列名和定义的pojo属性名不一致,就可以通过定义一个resultMap对列名和pojo属性名之间作一个映射关系。然后使用resultMap作为statement的输出映射类型。resultMap可以实现将查询结果映射为复杂类型的pojo,比如在查询结果映射对象中包括pojo和list实现一对一查询和一对多查询。

http://www.lbrq.cn/news/1470133.html

相关文章:

  • 怎么里ip做网站/成都今天重大新闻事件
  • 建设电子商务网站的预期收益/seo作弊
  • 西宁网站设计/游戏推广渠道
  • ps可以做网站吗/域名收录查询工具
  • 看怀集app下载/seo优化文章网站
  • 网站app怎么制作教程/百度广告点击一次多少钱
  • 有什么兼职做it的网站好/高权重网站出售
  • pageadmin自助建站/seow
  • 家教网站如何做/百度指数排行榜
  • 电商网站seo怎么做/优化服务公司
  • wordpress自定义文章类型/网站上不去首页seo要怎么办
  • 网站建设里的知识/怎么从网上找客户
  • 个人建站平台/关键词搜索排名公司
  • 网站开发细节/深圳网络络推广培训
  • 网站没被收录/关键词优化排名哪家好
  • 网站建设售后培训/网络营销教程
  • 阿里云怎么做淘宝客网站/怎么弄一个自己的链接
  • 电脑做网站主机/人民日报最新头条10条
  • 营销型的网站/seo零基础教学视频
  • 自己做网站的二维码/服务网站排名咨询
  • 白城网站建设/东莞网站优化关键词排名
  • 做网站公证需要费用是多少/黄页引流推广网站软件免费
  • 学做彩票网站有哪些/深圳网站建设方案
  • 建设电子商务网站前的市场分析/百度app手机版
  • 做视频网站视频放在哪里/广告免费发布信息平台
  • 青岛外贸假发网站建设/高清免费观看电视网站
  • 邯郸企业做网站报价/郑州网站seo服务
  • 广州市网站公司/线上广告接单平台
  • 青岛在线制作网站/长沙seo行者seo09
  • 网站是用dw做的吗/品牌全案营销策划
  • String boot 接入 azure云TTS
  • Implement recovery based on PITR using dump file and binlog
  • 暑期算法训练.12
  • 如何在 Mac OS 上安装 Cursor
  • 超聚变:智能体时代,AI原生重构城企数智化基因
  • AI 安监系统:为工业园安全保驾护航