- 编码流程
- 编写接口
- 编写对应的mapper中的sql语句
- @Test测试使用
- 万能Map
- 模糊查询
- 总结
- 编写接口
- 编写对应的mapper中的sql语句
- 测试使用
package com.cao.Dao;
import com.cao.pojo.User;
import java.util.List;
public interface UserMapper {
//select All user
List getUserList();
// select user by id
User getUserById(int id);
//insert a user
int addUser(User user);
//update a user
int updateUser(User user);
//万能map更新数据
int updateUser2(Map map);
//delete user
int deleteUser(int id);
}
编写对应的mapper中的sql语句
@Test测试使用
package com.cao.Dao;
import com.cao.pojo.User;
import org.apache.ibatis.session.SqlSession;
import com.cao.utils.mybatisUtils;
import org.junit.jupiter.api.Test;
import java.util.List;
public class UserDaoTest {
@Test
public void test1(){
SqlSession sqlSession = mybatisUtils.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
List userList = userMapper.getUserList();
for (User user:userList){
System.out.println(user);
}
sqlSession.close();
}
@Test
public void test2(){
SqlSession sqlSession = mybatisUtils.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = userMapper.getUserById(3);
System.out.println(user);
sqlSession.close();
}
//增删改需要提交事务
@Test
public void test3(){
SqlSession sqlSession = mybatisUtils.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
userMapper.addUser(new User(5,"cao","123456"));
//提交事务
sqlSession.commit();
sqlSession.close();
}
@Test
public void test4(){
SqlSession sqlSession = mybatisUtils.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
userMapper.updateUser(new User(5,"chang","112233"));
//提交事务
sqlSession.commit();
sqlSession.close();
}
@Test
public void test5(){
SqlSession sqlSession = mybatisUtils.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
userMapper.deleteUser(1);
//提交事务
sqlSession.commit();
sqlSession.close();
}
@Test
public void test6(){
SqlSession sqlSession = mybatisUtils.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
HashMap map = new HashMap();
map.put("userid",5);
map.put("username","cao");
userMapper.updateUser2(map);
//提交事务
sqlSession.commit();
sqlSession.close();
}
}
万能Map
在实体类或者数据库中的表,字段和参数过多时,利用map的键值对,更新某一条数据的时候不需要new一个完整的User,只需要往map中put需要修改的键值对即可。
mapper文件中的sql语句也不需要强制变量名与数据库中的变量名一致。
- java代码执行的时候,传递通配符%
ListuserList = userMapper.getUserLike("%c%");
- 在sql拼接中使用通配符
select * from mybatis.user where name like "%"#{value}"%"
总结
增删改需要提交事务,sql语句才会生效
//提交事务
sqlSession.commit();
多个参数用Map,或者注解。
Map传递参数,直接在sql中取出key即可【parameterType=“map”】
update mybatis.user set name =#{username} where id = #{userid}
对象传递参数,直接在sql中取出对象的属性即可【parameterType=“com.cao.pojo.User”】
update mybatis.user set name=#{name},pwd =#{pwd} where id =#{id}
只有一个基本类型参数情况下,可以省略【parameterType=“int”】,直接取到
parameterType="int"可以不写
delete from mybatis.user where id=#{id}
```



