基本的CRUD
我们只需要在我们的接口中添加这些方法就行。
在我们的UserMapper.xml中添加好相应的语句即可,这里我有添加了一个属性就是参数类型,获取判断条件#{}字段名字必须和实体类中的属性名一样。
<select id="getUserList" resultType="pojo.User">
select * from user;
</select>
<select id="getUser" parameterType="int" resultType="pojo.User">
select * from user where id=#{id};
</select>
<insert id="addUser" parameterType="pojo.User" >
insert into user(id,username,password) value (#{id},#{username},#{password});
</insert>
<update id="updateUser" parameterType="pojo.User">
update user
set username = #{username},password=#{password}
where id=#{id};
</update>
<delete id="deleteUser" parameterType="int">
delete from user where id=#{id};
</delete>
测试类
根据id获取用户信息 ,他只不过是传递了一个参数。
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.getUser(1);
System.out.println(user);
sqlSession.close();
增删改是和查不同,不同的一点是他需要提交事务,这也是比较重要的点。
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
// 添加
// int i = mapper.addUser(new User(5, "老五", "1111"));
// 修改
// int i = mapper.updateUser(new User(5, "老四", "1111"));
// 删除
int i = mapper.deleteUser(5);
if(i>0){
System.out.println("执行成功");
}
// 最终要的一点是增删该需要提交事务
sqlSession.commit();
sqlSession.close();
Map版
之所以交map版,主要是参数类型变成map,同样我们在接口中添加这样一个方法。
int addUser2(Map<String,Object> map);
在UserMapper.xml中添加,在这里我们的参数类型发生了变化,同时我们接收参数的名可以取任意值,但是个值要和我们传递map中的键一致,要不然取不到值。
<insert id="addUser2" parameterType="map">
insert into user(id,username,password) value (#{userid},#{name},#{pwd});
</insert>
测试类 我们只需要把参数传递到map中,这样我们可以决定我们传递的参数,我们只需要传递我们用到参数就行。
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map<String,Object> map=new HashMap<>();
map.put("userid","4");
map.put("name","老四");
map.put("pwd","1111");
int i = mapper.addUser2(map);
if (i>0){
System.out.println("执行成功");
}
sqlSession.commit();
sqlSession.close();
模糊查询
我们在查询过程中可能会用到模糊查询。
第一中相对来说比较安全
select * from user where username like #{name}
我们只需要在传递参数的时候添加好%%就好。
List<User> user = mapper.getUserLike("%阿%");
第二种会出现sql注入问题
select * from user where username like "%"#{name}"%"
我们把%%写到sql语句中,我们只需要传递参数。
List<User> user = mapper.getUserLike("阿");