注意:结合之前文章mybatis基础,在此基础上进行。
1 万能的Map
假设我们的实体类,或者数据库中的表、字段或者参数过多,我们可以考虑使用Map
1 不同名字的插入操作
// 不同名字的插入操作
int addUser1(Map<String,Object> map);
<!--不同名字的插入操作-->
<insert id="addUser1" parameterType="map">
insert into user(id,name,pwd,age) values (#{id},#{name},#{pwd},#{age});
</insert>
//6.万能的map 不同名字的插入
@Test
public void addUser1(){
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map<String,Object> map = new HashMap<String, Object>();
map.put("id",8);
map.put("name","老王");
map.put("pwd","四川");
map.put("age",20);
int i = mapper.addUser1(map);
if (i > 0){
sqlSession.commit();
sqlSession.close();
System.out.println("添加成功");
}else {
sqlSession.rollback();
sqlSession.close();
System.out.println("添加失败");
}
}
2 实现多个字段的联合查找
// 可以实现多个字段的联合查找
public User findbyId2(Map<String,Object> map);
<!--多个字段的联合查找-->
<select id="findbyId2" parameterType="map" resultType="yj.com.pojo.User">
select * from xsgl.user where id=#{id} and name=#{name};
</select>
//7.多个字段的联合查找
@Test
public void findbyId2(){
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
HashMap<String,Object> map = new HashMap<String, Object>();
map.put("id",1);
map.put("name","萧炎");
try{
User user = mapper.findbyId2(map);
System.out.println(user.toString());
}catch (Exception e){
System.out.println("没有这个对象");
}
}
3 删除
//删除
public int deleteUser2(Map<String,Object> map);
<!-- 删除 -->
<delete id="deleteUser2" parameterType="map">
delete from xsgl.user where id=#{id} or name=#{name}
</delete>
@Test
public void deleteUser2(){
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
HashMap<String,Object> map = new HashMap<String, Object>();
map.put("id",6);
map.put("name","老王");
int i = mapper.deleteUser2(map);
if (i > 0){
sqlSession.commit();
sqlSession.close();
System.out.println("删除成功");
}else{
sqlSession.rollback();
sqlSession.close();
System.out.println("删除失败");
}
}
4 修改
//修改
public int updateUser2(Map<String,Object> map);
<!-- 修改 -->
<update id="updateUser2" parameterType="map">
update user set name =#{name},pwd=#{pwd},age=#{age} where id=#{id};
</update>
//9.修改
@Test
public void updateUser2(){
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
HashMap<String,Object> map = new HashMap<String, Object>();
map.put("id",3);
map.put("name","老王");
map.put("pwd","四川");
map.put("age",20);
int i = mapper.updateUser2(map);
if (i > 0){
sqlSession.commit();
sqlSession.close();
System.out.println("修改成功");
}else{
sqlSession.rollback();
sqlSession.close();
System.out.println("修改失败");
}
}
2 模糊查询
1 方法一
//模糊查询 方法一
public List<User> getUserLike(String name);
<!-- 模糊查询 方法一 -->
<select id="getUserLike" parameterType="String" resultType="yj.com.pojo.User">
select * from user where name like #{name}
</select>
//10.模糊查询 方法一
@Test
public void getUserLike() throws IOException {
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> users = mapper.getUserLike("叶");
for (User user : users) {
System.out.println(user.toString());
}
}
2 方法二
//模糊查询 方法二
public List<User> getUserLike1(String name);
<!-- 模糊查询 方法二 -->
<select id="getUserLike1" parameterType="String" resultType="yj.com.pojo.User">
select * from user where name like "%"#{name}"%"
</select>
//11.模糊查询 方法二
@Test
public void getUserLike1() throws IOException {
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> users = mapper.getUserLike1("叶");
for (User user : users) {
System.out.println(user.toString());
}
}