万能的Map
1、当mybatis向数据库中插入一条信息
- 1、首先要在接口中定义一个方法
方法中传入的参数时一个用户
int insertUser(User user);//插入数据
- 2、去mapper.xml中调用这个方法
这时候参数类型填的是用户,那么values 后面#{ }中传入的值一定要是User类中的变量,不可以随便修改
<insert id="insertUser" parameterType="com.liu.pojo.User">
insert into user (id,username,pwd) values (#{id},#{username},#{pwd})
</insert>
- 3、去测试一下是否插入成功
//插入一条数据
@Test
public void insertUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int i = mapper.insertUser(new User(4,"东宝","123321"));
sqlSession.commit();
if(i>0){
System.out.println("插入用户成功");
}
sqlSession.close();
}
2、其实我们传入的参数类型可以是Map
- 比如修改之后
传入一个Map键值对参数
调用类型为map,那么value后面大括号中的值我们可以随便写,因为只要符合键值对中的键就行;
只需要在后面测试的时候把键值对添加上就行
而且这种方法在参数比较少的时候就不用在参数中直接传入一个用户了
在修改和查询的时候也可以这样
int insertUser02(Map<String,Object> map);
<insert id="insertUser02" parameterType="map">
insert into user (id, username ) values (#{userid},#{username})
</insert>
@Test
public void insertUser02(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map<String, Object> map = new HashMap<>();
map.put("userid",5);
map.put("username","大寻");
int i = mapper.insertUser02(map);
sqlSession.commit();
if(i>0){
System.out.println("插入用户成功");
}
sqlSession.close();
}
3、mybatis中的模糊查询
- 首先可以在数据库中添加两个用户
有两种模糊查询的方法
- 第一种
“%”#{value}"%"
List users = mapper.selectUserLike(“张”);
- 第二种
#{value}
List users = mapper.selectUserLike("%张%");
- 但是第一种容易发生sql注入
List<User> selectUserLike(String name);//模糊查询
<select id="selectUserLike" resultType="com.liu.pojo.User" parameterType="String">
select * from user where username like "%"#{value}"%"
</select>
@Test
public void selectUserLike() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
//mybatis工具类的getSqlSession方法
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> users = mapper.selectUserLike("张");
for (User user: users){
System.out.println(user);
}
sqlSession.close();
}
}
List<User> selectUserLike(String name);//模糊查询
<select id="selectUserLike" resultType="com.liu.pojo.User" parameterType="String">
select * from user where username like #{value}
</select>
@Test
public void selectUserLike() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
//mybatis工具类的getSqlSession方法
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> users = mapper.selectUserLike("%张%");
for (User user: users){
System.out.println(user);
}
sqlSession.close();
}
}