增删改查(CRUD)操作:
Select标签是mybatis中最常用的标签之一,通过函数的返回值属性属性可以详细配置每一条SQL语句。
-
id:命名空间中唯一的标识符,接口中的方法名与映射文件中的SQL语句ID 一一对应。
-
parameterType:传入SQL语句的参数类型,参数多时可以多尝试使用Map。
-
resultType:SQL语句返回值类型。
1. SELECT操作:
-
在Mapper中添加对应方法:
public interface Mapper {
//根据id查询用户
User selectUserById(int id);
//根据name查询用户
User selectUserByName(String name);
}
-
在Mapper.xml中添加select语句:
<mapper namespace="com.mybatis.dao.Mapper">
<select id="selectUserById" resultType="com.mybatis.pojo.User">
select * from user where id = #{id}
</select>
<select id="selectUserByName" resultType="com.mybatis.pojo.User">
select * from user where name = #{name}
</select>
</mapper>
-
测试类中测试:
public class MapperTest {
@Test
public void selectUser() {
SqlSession session = MybatisUtils.getSession(); //获取SqlSession连接
Mapper mapper = session.getMapper(Mapper.class);
User user = mapper.selectUserById(3);
User user1 = mapper.selectUserByName("李四");
System.out.println("根据Id查询:"+user);
System.out.println("根据name查询:"+user1);
session.close();
}
}
-
运行结果:
2. INSERT操作:
-
Mapper接口中添加对应的方法:
//插入用户数据
int addUser(User user);
-
Mapper.xml中添加insert语句:
<insert id="addUser" parameterType="com.mybatis.pojo.User">
insert into user (id,name,pwd) values (#{id},#{name},#{pwd})
</insert>
-
测试类中测试:
User user3 = new User(4,"赵六","qwer");
int flag = mapper.addUser(user3);
System.out.println("插入成功: "+flag);
session.commit(); //注意记得提交事务
session.close();
增删改操作是事务型操作,要主动提交事务才会持久化到文件中
-
运行结果:
3. UPDATE操作:
-
Mapper接口中添加对应的方法:
//更新一个用户
int updateUser(User user);
-
Mapper.xml中添加update语句:
<update id="updateUser" parameterType="com.mybatis.pojo.User">
update user set name=#{name},pwd=#{pwd} where id = #{id}
</update>
-
测试类中测试:
User user4 = mapper.selectUserByName("李四");
System.out.println("修改前密码:"+user4.getPwd());
user4.setPwd("654321");
mapper.updateUser(user4);
System.out.println("修改后密码:"+user4.getPwd());
session.commit(); //注意记得提交事务
增删改操作是事务型操作,要主动提交事务才会持久化到文件中
-
运行结果:
4. DELETE操作:
-
Mapper接口中添加对应的方法:
//根据名称删除用户
void deleteUser(String name);
-
Mapper.xml中添加delete语句:
<delete id="deleteUser" parameterType="com.mybatis.pojo.User">
delete from user where name = #{name}
</delete>
-
测试类中测试:
//删除用户”张三“
mapper.deleteUser("张三");
session.commit(); //注意记得提交事务
增删改操作是事务型操作,要主动提交事务才会持久化到文件中
-
运行结果:
5. 模糊查询
-
Mapper接口中添加对应的方法:
//模糊查询
User selectLike(String name);
-
Mapper.xml中添加模糊查询语句:
<select id="selectLike" resultType="com.mybatis.pojo.User">
select * from user where name like "%"#{name}"%"
</select>
注意防止sql注入问题
-
测试类中测试:
//查询姓名中有”王“的用户信息
User user5 = mapper.selectLike("王");
System.out.println("结果为:"+user5);
session.commit(); //注意记得提交事务
增删改操作是事务型操作,要主动提交事务才会持久化到文件中
-
运行结果:
6. Map查询
-
Mapper接口中添加对应的方法:
//Map查询
User selectByMap(Map<String,Object> map);
-
Mapper.xml中添加Map语句:
<select id="selectByMap" parameterType="map" resultType="com.mybatis.pojo.User">
select * from user where name = #{username} and id = #{id}
</select>
-
测试类中测试:
Map<String, Object> map = new HashMap<String, Object>();
map.put("username","王五");
map.put("id","1");
User user6 = mapper.selectByMap(map);
System.out.println(user6);
session.commit(); //注意记得提交事务
增删改操作是事务型操作,要主动提交事务才会持久化到文件中
-
运行结果:
7. 总结
-
所有的增删改操作都需要提交事务!
-
接口所有的普通参数,尽量都写上@Param参数,多个参数时,必须写上!
-
参数较多时,可以考虑使用map传递参数!
-