我们通常称为增删改查
增加(Create)、读取(Retrieve)、更新(Update)和删除(Delete)
第一步:编写接口
//查询方法
List<User> fingAll() throws Exception;
?
User findById(Integer id) throws Exception;
第二步:编写对应mapper中的sql语句
namespace就不多讲了命名空间就是接口对应包名,id就是对应的方法名
注意这里SQL语句的占位符#
<!--resultType返回类型-->
<select id="fingAll" resultType="User">
select * from mybatis.user
</select>
?
<!--通过id查询一个user对象-->
<select id="findById" parameterType="Integer" resultType="User">
select * from user where id=#{id}
</select>
第三步:测试
第一步:编写接口
//增加方法
void addUser(User user) throws Exception;
第二步:编写mapper对应的sql语句
parameterType指的是参数类型
<!--添加一个User对象-->
<insert id="addUser" parameterType="User" >
insert into user (name,email,phone,gender,password,age,create_time,update_time) values (#{name},#{email},#{phone},#{gender},#{password},#{age},#{create_time},#{update_time});
</insert>
第三步:编写测试
这里需要注意提交事务(不是查询都需要提交事务)
第一步:编写接口
//删除方法
void deleteUser(Integer id) throws Exception;
第二步:编写mapper对应的SQL语句
<!--删除一个User对象-->
<delete id="deleteUser" parameterType="Integer">
delete from user where id=#{id}
</delete>
第三步:编写测试
还是提醒最易提交事务
第一步:编写接口
//修改方法
Integer updateUser(User user)throws Exception;
第二步:编写mapper对应的SQL语句
<!--修改User字段-->
<update id="updateUser" parameterType="User" >
update user set name=#{name},email=#{email},phone=#{phone},gender=#{gender},password={password},age=#{age},create_time=#{create_time},update_time=#{update_time} where id=#{id}
</update>
第三步:编写测试
还是提醒最易提交事务
什么时候用万能map? 为什么要用万能map?
当我们实体类,或者数据库中表的字段过多,我们就应当使用map
map在公司的开发中用的比较多
第一步:编写接口(我们这里就直接用map)
//增加方法
void addUser2(Map<String,Object> map) throws Exception;
第二步:编写mapper对应的sql语句
这里就给了三个字段
parameterType指定的是参数类型
很明显用map我们值可以自定义没有按照数据库或者实体类进行限定(也就是直接取出key就可以了)
<!--添加一个User对象-->
<insert id="addUser2" parameterType="map" >
insert into user (name,age,email) values (#{isName},#{isAge},#{email});
</insert>
第三步:编写测试
为什么需要模糊查询?
主要还是当我们不确定某个数据的时候当然也可以查出数据库表中具有相同元素的字段
第一步:编写接口
//模糊查询
List<User> findUserLike(String value) throws Exception;
第二步:编写mapper对应的sql
这里用到like关键字进行模糊查询
<!--模糊查询user集合-->
<select id="findUserLike" resultType="User">
select * from user where name like #{value}
</select>
第三步:编写测试
我这里是拿百分号(%)占位 也可以拿(_)下划线占位
下划线是表示占一个位 百分号表示占0个或多个位
当然也可以在sql语句中直接使用占位符写测试的时候就不用写了
select * from user where name like "%"#{value}"%"
%:表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百 分号(%%)表示。
_: 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句:
[ ]:表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。
select * from user where realname like ‘[张蔡王]杰‘
查询出“张杰”,“蔡杰”,“王杰”(而不是“张蔡王杰”)
[^] :表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。
select * from user where realname like ‘[^张蔡王]杰‘
查询出不姓“张”,“蔡”,“王”的“林杰”,“赵杰”等
原文:https://www.cnblogs.com/xuan-study/p/13325187.html