Mybatis Map和模糊查询
在前面增删改查的代码例子里程序并不是很完美。比如修改用户信息有时可能只是修改一个密码。
但是在我们的代码必须要传递一整个用户类给mybatis去实现更新功能。
在mybatis里使用map
定义一个新add接口,传递参数为map<String,Object> 这样的定义map几乎可以说是万能的
package dao;
import pojo.User;
import java.util.List;
import java.util.Map;
public interface UserDao {
List<User> getUserList();
//根据ID查询用户
User getUserByid(int id);
void addUser(User user);
void addUser2(Map<String,Object> map);
void updateUser(User user);
void deleteByid(int id);
}
配置mapper文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace对应接口名字-->
<mapper namespace="dao.UserDao">
<!--select id 对应方法名字-->
<select id="getUserList" resultType="pojo.User">
select * from mybatis.user
</select>
<select id="getUserByid" resultType="pojo.User" parameterType="int">
select * from mybatis.user where id=#{id}
</select>
<select id="addUser" parameterType="pojo.User">
<!--由于对象有设置标准的getset方法 可以直接使用属性表示-->
insert into mybatis.user(id,name,pwd) values (#{id},#{name},#{pwd});
</select>
<insert id="addUser2" parameterType="map">
<!--values的字段只要和map中key的字段相同即可-->
insert into mybatis.user(id,name,pwd) values (#{id},#{username},#{password});
</insert>
<select id="updateUser" parameterType="pojo.User">
update mybatis.user set name=#{name},pwd=#{pwd} where id=#{id};
</select>
<select id="deleteByid" parameterType="int" >
delete from mybatis.user where id=#{id};
</select>
</mapper>
主程序
import dao.UserDao;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import pojo.User;
import utiles.MybatisUtiles;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Mytest {
@Test
public void addTest2(){
SqlSession sqlSession = MybatisUtiles.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
Map<String,Object> map=new HashMap<String, Object>();
map.put("id",5);
map.put("username","map哥");
map.put("password","123456");
mapper.addUser2(map);
sqlSession.commit();
sqlSession.close();
}
}

通过这种map手段,假设我们需要实现一个只修改密码的功能。那么我们就构建map只给密码的key就可以了。不需要鸟其他的属性。十分灵活。
当然map的手段如果在大型项目维护会十分困难。需要谨慎使用
模糊查询推荐写法
在配置文件里对参数两边加%% 这样可以防止sql注入
如:


浙公网安备 33010602011771号