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

手机网站内容模块外链推广网站

手机网站内容模块,外链推广网站,购物中心网站建设,dw做的网站如何上传图片目录 一、定义接口、实体类、创建XML文件实现接口) 二、MyBatis的增删改查 🍅1、MyBatis传递参数查询 🎈写法一 🎈写法二 🎈两种方式的区别 🍅2、删除操作 🍅3、根据id修改用户名 &#x…

目录

一、定义接口、实体类、创建XML文件实现接口)

二、MyBatis的增删改查 

🍅1、MyBatis传递参数查询

        🎈写法一

         🎈写法二

        🎈两种方式的区别

🍅2、删除操作

🍅3、根据id修改用户名

🍅4、添加用户操作

        🎈返回受影响的行数

        🎈返回自增id

🍅5、like查询

🍅6、多表查询

三、注意

🍅1、mybatisx插件报错

🍅2、数据回滚

🍅 3、查询某字段结果为null时



一、定义接口、实体类、创建XML文件实现接口)

注意包名:

实体类

package com.example.demo.model;import lombok.Data;import java.time.LocalDateTime;@Data
public class UserInfo {private int id;private String username;private String password;private String photo;private LocalDateTime updatatime;private LocalDateTime createtime;private int state;}

接口

package com.example.demo.dao;import com.example.demo.model.UserInfo;
import org.apache.ibatis.annotations.Mapper;import java.util.List;@Mapper  //数据持久层的标志
public interface UserMapper {List<UserInfo> getAll();
}

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">
<mapper namespace="com.example.demo.dao.UserMapper">
<!--    id是UserMapper的方法名--><select id="getAll" resultType="com.example.demo.model.UserInfo">
--         不写分号select * from userinfo</select>
</mapper>

二、MyBatis的增删改查 

🍅1、MyBatis传递参数查询

        🎈写法一

@Param("id")与${id}相互匹配 (及时执行)

使用id去查询某条数据(传参数)

UserInfo getUserById(@Param("id") Integer uid);
-- 这里应该写${id},而不是uid
<select id="getUserById" resultType="com.example.demo.model.UserInfo">select * from userinfo where id=${id}</select>

测试类: 

@Testvoid getUserById() {UserInfo userInfo = userMapper.getUserById(1);System.out.println(userInfo.toString());}

         🎈写法二

@Param("id")与#{id}相互匹配 (预执行)

<select id="getUserById" resultType="com.example.demo.model.UserInfo">select * from userinfo where id=#{id}</select>

        🎈两种方式的区别

1.${}是直接替换;而#{}是预执行

2.使用${}是不安全的,存在SQL注入;而#{}是安全的,不存在SQL注入

3.${}使用场景:当业务需要传递SQL语句时,只能使用${},不能使用#{}。

SQL注入:将SQL代码插入或添加到应用(用户)的输入参数中的攻击,之后再将这些参数传递给后台的sql服务器加以解析和执行。


🍅2、删除操作

UserInfo getUserById(@Param("id") Integer uid);
<!--    delete操作不需要设置返回类型--><delete id="delById">delete from userinfo where id=#{id}</delete>

 测试类

@Transactional   //数据回滚:使用该注解,会执行下面操作,但是不会真的操作数据库中的内容@Testvoid testGetUserById() {int id = 1;UserInfo result = userMapper.getUserById(id);System.out.println("受影响的行数:"+result);}

🍅3、根据id修改用户名

//    根据id修改用户名
//    返回受影响行数int update(UserInfo userInfo);
<!--    默认返回受影响的行数,不需要设置resultType--><update id="update" >update userinfo set username=#{username} where id=#{id}</update>
@Transactional@Testvoid update() {UserInfo userInfo = new UserInfo();userInfo.setId(1);userInfo.setUsername("管理员");int result = userMapper.update(userInfo);System.out.println("受影响行数"+ result);}

 运行结果:


🍅4、添加用户操作

        🎈返回受影响的行数

//返回受影响字段
int add(UserInfo userInfo);
<insert id="add">insert into userinfo(username,password,photo) 
values (#{username},#{password},#{photo})</insert>
//测试类
@Testvoid add() {UserInfo userInfo = new UserInfo();userInfo.setUsername("张三");userInfo.setPassword("11111");userInfo.setPhoto("/image/default.png");int result = userMapper.add(userInfo);System.out.println("受影响的行数:"+ result);}

 运行结果:

        🎈返回自增id

    int insert(UserInfo userInfo);
<insert id="insert" useGeneratedKeys="true" keyColumn="id" keyProperty="id">insert into userinfo(username,password,photo) values (#{username},#{password},#{photo})</insert>
//测试类 
@Testvoid insert() {UserInfo userInfo = new UserInfo();userInfo.setUsername("李四");userInfo.setPassword("111111");userInfo.setPhoto("");int result = userMapper.insert(userInfo);System.out.println("受影响的行数:" + result +"| id:"+ userInfo.getId());}

 运行结果:

 对应关系:


🍅5、like查询

    List<UserInfo> getListByLike(@Param("username")String username);
<select id="getListByLike" resultType="com.example.demo.model.UserInfo">select * from userinfo where username like concat('%',#{username},'%')</select>
@Testvoid getListByLike() {String username = "三";List<UserInfo> list = userMapper.getListByLike(username);System.out.println(list);}

运行结果:


🍅6、多表查询

使用注解将sql语句和接口连接起来。

之前是,写一个接口就要写一个对应的xml文件编写sql语句。现在可以不使用这种方法

可以直接在接口中通过注解编写查询语句:

@Mapper
public interface ArticleMapper{@Select("select a.*,u.username from articleinfo a" +"left join userinfo u on a.uid=u.id")List<Articleinfo> getAll();
}

测试类:

class ArticleMapperTest {@Autowiredprivate ArticleMapper articleMapper;@Testvoid getAll() {List<Articleinfo> list = articleMapper.getAll();System.out.println(list);}
}

 


三、注意

🍅1、mybatisx插件报错

 以上并非系统报错,而是插件在报错,告诉我们没有设置返回的技术类型,高版本的idea遇到这种情况运行是不会报错的。

🍅2、数据回滚

 @Transactional   //数据回滚:使用该注解,会执行下面操作,但是不会真的操作数据库中的内容

🍅 3、查询某字段结果为null时

原因是:实体类中的属性和数据库表中的字段名不一致。

       解决方案:

        1.将实体类中的属性和表中的字段名保持一致(最简单的解决方案)

        2.使用sql语句中的as进行列名(字段名)重命名,让列名(字段名)等于属性名

<!--   加入要查询的字段名应该是name,对name进行重命名 -->
<selet id="getUserById" resultType="com.example.demo.model.UserInfo">select username as name from userinfo where id=#{id}c</select>

        3.定义一个resultMap,将属性名和字段名进行手动映射

        resultMap放入mapper.xml的<mapper></mapper>中 

<resultMap id="UserMapper" type="com.example.demo.model.UserInfo"><id column="id" property="id"></id><result column="username" property="username"></result><result column="password" property="password"></result></resultMap>
<select id="getUserById" resultMap="BaseMap">select * from userinfo where id=#{id}</select>

以下是对应关系:尽量把全部属性映射上,否则多表查询时可能会报错。

上图有个错误!!!  colum是表里面的字段名,property是实体类里的属性,写反了。

http://www.hrbkazy.com/news/17556.html

相关文章:

  • 2018企业网站优化应该怎么做石家庄最新消息
  • wordpress突然访问不了网站seo优化网站
  • wordpress怎样添加轮播图seo黑帽技术工具
  • 正规做兼职的网站干净无广告的搜索引擎
  • 网站开发工程论坛百度网
  • 网站正在建设中 蓝色百度竞价排名规则及费用
  • 如何升级网站后台怎么百度推广
  • 滑动门代码 wordpressseo学院
  • 录音录像手表网站软文推广发布平台
  • 积分购物型网站seo工具不包括
  • 网站建设中 动态图片seo优化一般包括
  • 网站建设费用做无形资产企业网站管理
  • 建设网站重庆学网络营销好就业吗
  • 互动类网站今日全国最新疫情通报
  • jsp网站项目深圳推广公司推荐
  • 永川住房和城乡建设委员会网站互动营销成功案例
  • 哪个网站支持接单做网页的seo结算系统
  • app开发价格参考滁州网站seo
  • 区块链app开发价格搜索引擎优化代理
  • 网站开发参考文献2015年后谷歌浏览器网页版入口在哪里
  • 网站首页尺寸莆田百度快照优化
  • 怎么做外贸个人网站域名怎么查
  • 山西长治做网站公司有哪些石家庄百度关键词搜索
  • 做推广要知道的网站公司培训
  • 东莞网站建设销售公司推销一个产品的方案
  • 网站 锚点链接怎么做seo检查工具
  • 域名备案网站名称推广公司是做什么的
  • 房管局网站建设方案百度实名认证
  • 防城港建设局网站大概需要多少钱
  • 交互效果网站成人职业技能培训有哪些项目