一、用Map传递所有参数
在实体类属性比较多的时候用Map代替实体类会方便很多
编写抽象方法
//用map添加一个用户
//这里抽象方法的参数用Map
int insertUser2(Map<String,Object> map);
mybatis配置文件
<!-- 配置文件这里的sql语句参数就是我们刚刚抽象方法里面的参数map
需要添加的数据名称我们就可以自己随便取,不用和实体类的属性名相同,
在数据多的时候非常方便 -->
<insert id="insertUser2" parameterType="map">
insert into mybatis1.user values (#{i},#{n},#{p});
</insert>
测试类
@Test
public void insertUser1(){
//获取SqlSession对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class); //通过SqlSession 得到mapper
//因为用的map需要创建一个map对象
Map<String,Object> map = new HashMap<>();
map.put("i",4);
map.put("n","哈哈");
map.put("p","1234");
int in = mapper.insertUser2(map);
//这里需要特别注意的是增删改是需要提交事务的,没有提交事务数据库是不会跟新的
if(in > 0){
sqlSession.commit();
System.out.println("添加成功");
}
// 用完后关闭sqlSession
sqlSession.close();
}
二、模糊查询
编写抽象方法
//模糊查询
//查询带李用户的方法
List<User> ListLike(String value);
配置文件 (需要注意sql注入问题)
<select id="ListLike" resultType="com.li.pojo.User" parameterType="String">
select * from mybatis1.user where name like "%"#{value}"%" <!--就是在
这里查询的字符
两边拼接我们需要的通配符-->
</select>
方式二:不在配置文件中拼接通配符
<select id="ListLike" resultType="com.li.pojo.User" parameterType="String">
select * from mybatis1.user where name like #{value}
</select>
测试类
@Test
public void NameUser1(){
//获取SqlSession对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class); //通过SqlSession 得到mapper
List<User> userList = mapper.ListLike("李");
for (User user : userList) {
System.out.println(user);
}
// 用完后关闭sqlSession
sqlSession.close();
}
方式二:在测试类中拼接通配符
@Test
public void NameUser1(){
//获取SqlSession对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class); //通过SqlSession 得到mapper
List<User> userList = mapper.ListLike("%李%");
for (User user : userList) {
System.out.println(user);
}
// 用完后关闭sqlSession
sqlSession.close();
}