实体类或数据库中的表,字段或参数过多,考虑使用Map
接口里定义方法
java
int addUser(Map<String,Object> map);
mapper.xml:
parameterType 参数类型设置为 map
sql 语句的 values 不一定要与数据库中的表字段相同
XML
<insert id="addUser" parameterType="map">
insert into mybatis.user(id,name,pwd) values(#{userId},#{userName},#{userPwd});
</insert>
测试类:
先 new 一个 HashMap
再调用 put 方法添加数据
java
@Test
public void addUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map<String, Object> map = new HashMap<String, Object>();
map.put("userId",5);
map.put("userName","张三5");
map.put("userPwd","123");
mapper.addUser(map);
sqlSession.commit();
sqlSession.close();
}
Map 传递参数,直接在 sql 中取出 key 即可,parameterType="map"
对象传递参数,直接在 sql 中取对象的属性即可,parameterType="Object"
只有一个基本类型参数的情况下,可以直接在 sql 中取到
多个参数用 Map,或者注解
模糊查询:
写个接口
java
List<User> getUserLike(String value);
mapper.xml:
XML
<select id="getUserLike" resultType="com.demo.pojo.User">
select * from mybatis.user where name like #{value}
</select>
测试类:
模糊查询加通配符%
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();
}