Map写法
假设,我们的实体类,或者数据库中的表,字段或者参数过多,我们应当考虑使用Map
Maaapper.xml 配置文件中
xml
<!--万能的map-->
<insert id="addUser2" parameterType="map">
insert into mybatis.user(id, name, pwd) values (#{userId}, #{userName}}, #{passWord});
</insert>
接口中
java
// 万能的Map,用map传有个好处,不需要知道数据里面有什么数据 ,我们只需要查对应的字段
int addUser2(Map<String,Object> map);
测试方法中
java
@Test
public void addUser2(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map<String,Object> map = new HashMap<String,Object>();
map.put("userId",3);
map.put("userName","cike_y");
map.put("passWord","123456");
int i = mapper.addUser2(map);
if (i>0){
System.out.println("成功插入"+i+"条数据");
}
sqlSession.commit();
sqlSession.close();
}

- Map传递参数,直接在sql取出key即可!parameterType="map"
- 对象传递参数,直接在sql中取出对象的属性即可!parameterType="Object"
- 只有一个基本类型参数的情况下,可以直接在sql中取到! (可以不写参数类型)
- 多个参数用Map,或者使用注解!
模糊查询
必要条件
- SQL语句执行的时候传递通配符 % %
plsql
select * from mybatis.user where name like "%"#{value}"%";
select * from mybatis.user where name like '%${value}%';
- Java代码执行的时候,传递通配符 % %
java
List<user> userList = mapper.getUserLike("%五%");
测试方法中
java
@Test
public void getUserLike(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<user> userList = mapper.getUserLike("%五%");
for (user user : userList){
System.out.println(user);
}
sqlSession.close();
}
接口中
java
List<user> getUserLike(String value);
Mapper.xml配置文件中
xml
<select id="getUserLike" resultType="com.cike.pojo.user">
<!--select * from mybatis.user where name like '%${value}%';-->
select * from mybatis.user where name like "%"#{value}"%";
</select>
