摄影旅游网站源码,网站网络推广软件,做网站的都是直男癌吗,wordpress安装教程视频教程需求 : 根据用户的输入情况进行插入
动态SQL:根据需求动态拼接SQL
用户往表中插入数据,有的数据可能不想插入,比如不想让别人知道自己的性别,性别就为空
insert into userinfo(username,password,age,gender,phone) values(?,?,?,?,?);
insert into userinfo(username,…需求 : 根据用户的输入情况进行插入
动态SQL:根据需求动态拼接SQL
用户往表中插入数据,有的数据可能不想插入,比如不想让别人知道自己的性别,性别就为空
insert into userinfo(username,password,age,gender,phone) values(?,?,?,?,?);
insert into userinfo(username,password,age,gender) values(?,?,?,?);
insert into userinfo(username,password,age,phone) values(?,?,?,?); 接下来看看 mybatis 注解的方式该如何实现动态SQL,新建了一个 userInfo2Mapper 接口
if标签里面的意思是 : 如果gener不为null,那就输出if标签的内容
package com.example.mybatisdemo.mapper;import com.example.mybatisdemo.model.UserInfo;
import org.apache.ibatis.annotations.*;import java.util.List;Mapper
public interface UserInfo2Mapper {Insert(script insert into userinfo(username,password,age, if testgender!nullgender,/if phone) value(#{username},#{password},#{age}, if testgender!null#{gender},/if #{phone}) /script)Integer insert(UserInfo userInfo);
} 然后老样子,Generate,test,勾选 insert ,然后补充代码,我们先每个数据都插入内容
package com.example.mybatisdemo.mapper;import com.example.mybatisdemo.model.UserInfo;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import static org.junit.jupiter.api.Assertions.*;SpringBootTest
class UserInfo2MapperTest {Autowiredprivate UserInfo2Mapper userInfo2Mapper;Testvoid insert() {UserInfo userInfo new UserInfo();userInfo.setUsername(kiki);userInfo.setPassword(555www);userInfo.setAge(23);userInfo.setGender(1);userInfo.setPhone(177966);userInfo2Mapper.insert(userInfo);}
}
插入成功 数据库中也能成功找到刚刚插入的数据 接下来我们要测试性别为空的情况,把 test代码里面的 userinfo.setGender 给去掉, 再次运行 数据库也能找到,说明性别为空也插入成功了
上面是注解的方式,接下来我们看看 XML 的方式该如何实现
在resources 中创建 Userinfo2XMLMapper.xml 文件
然后在 userInfo2Mapper 接口 中声明这个方法
package com.example.mybatisdemo.mapper;import com.example.mybatisdemo.model.UserInfo;
import org.apache.ibatis.annotations.*;import java.util.List;Mapper
public interface UserInfo2Mapper {Integer insertByXML(UserInfo userInfo);
}
将 Userinfo2XMLMapper.xml 文件中的 namespace 进行修改,改为 userInfo2Mapper 接口中的第一行 package 的内容再加上接口名
?xml version1.0 encodingUTF-8?
!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecom.example.mybatisdemo.mapper.UserInfo2Mapper/mapper
然后补充代码
?xml version1.0 encodingUTF-8?
!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecom.example.mybatisdemo.mapper.UserInfo2Mapperinsert idinsertByXMLinsert into userinfo(username,password,age,if testgender!nullgender,/ifphone)values(#{username},#{password},#{age},if testgender!null#{gender},/if#{phone})/insert
/mapper
再回到接口,然后Generate,test,勾选insertByXML,ok,先测试每个数据都插入的情况
package com.example.mybatisdemo.mapper;import com.example.mybatisdemo.model.UserInfo;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import static org.junit.jupiter.api.Assertions.*;SpringBootTest
class UserInfo2MapperTest {Autowiredprivate UserInfo2Mapper userInfo2Mapper;Testvoid insertByXML() {UserInfo userInfo new UserInfo();userInfo.setUsername(io);userInfo.setPassword(555www);userInfo.setAge(23);userInfo.setGender(1);userInfo.setPhone(177966);userInfo2Mapper.insertByXML(userInfo);}
} 成功插入 再把 userinfo.setGender 给去掉,再次运行 没毛病