需求:根据id查询用户
1、在UserMapper中添加对应方法
public interface UserMapper {
//查询全部用户
List<User> getUserList();
//根据Id查询用户
User getUserById(int id);
//增加一个用户
int addUser(User user);
}
2、在UserMapper.xml中添加Select语句
<select id="getUserById" resultType="com.lpf.pojo.User">
select * from user where id =#{id}
</select>
3、测试类中测试
@Test
public void getUserById(){
//1.获取SqlSession对象
SqlSession sqlSession = MybatisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.getUserById(1);
System.out.println(user);
sqlSession.close();
}
需求:给数据库增加一个用户
1、在UserMapper接口中添加对应的方法
//增加一个用户
int addUser(User user);
2、在UserMapper.xml中添加insert语句
<insert id="addUser" parameterType="com.lpf.pojo.User" >
insert into user (id,name,pwd) values (#{id},#{name},#{pwd});
</insert>
3、测试
@Test
//增删改要提交事务
public void addUser(){
//1.获取SqlSession对象
SqlSession sqlSession = MybatisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int i= mapper.addUser(new User(5, "李四", "123456"));
if(i>0){
System.out.println("插入成功");
}
//提交事务
sqlSession.commit();
sqlSession.close();
}
注意点:增、删、改操作需要提交事务!
需求:修改用户的信息
1、同理,编写接口方法
int updateUser(User user);
2、编写对应的配置文件SQL
<update id="updateUser" parameterType="com.lpf.pojo.User">
update user set name=#{name},pwd=#{pwd} where id=#{id}
</update>
3、测试
@Test
public void updateUser(){
SqlSession sqlSession = MybatisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.updateUser(new User(4,"呵呵","123456"));
sqlSession.commit();
sqlSession.close();
}
需求:根据id删除一个用户
1、同理,编写接口方法
//删除用户
int deleteUser(int id);
2、编写对应的配置文件SQL
<delete id="deleteUser" parameterType="int">
delete from user where id=#{id}
</delete>
3、测试
@Test
public void deleteUser(){
SqlSession sqlSession = MybatisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.deleteUser(5);
sqlSession.commit();
sqlSession.close();
}
小结:
-
所有的增删改操作都需要提交事务!
-
接口所有的普通参数,尽量都写上@Param参数,尤其是多个参数时,必须写上!
-
有时候根据业务的需求,可以考虑使用map传递参数!
-
为了规范操作,在SQL的配置文件中,我们尽量将Parameter参数和resultType都写上
用Map实现
1、在UserMapper接口中添加对应的方法
//用map操作
int addUser2(Map<String,Object> map);
2、在UserMapper.xml中添加insert语句
<insert id="addUser2" parameterType="map" >
insert into user (id,pwd) values (#{userid},#{password});
</insert>
3、测试
@Test
public void addUser2(){
//1.获取SqlSession对象
SqlSession sqlSession = MybatisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map<String,Object> map =new HashMap<String,Object>();
map.put("userid",5);
map.put("password","123456");
sqlSession.commit();
sqlSession.close();
}
模糊查询like语句该怎么写?
第1种:在Java代码中添加sql通配符。
List<User> userList = mapper.getUserLike("%呵%");
第2种:在sql语句中拼接通配符,会引起sql注入
select * from user where name like "%"#{value}"%"