环境:上一篇文章
用到的数据库:User、
编写接口:UserMapper 和关联接口的配置文件 UserMapper.xml.注意:每当在接口中定义了一个抽象方法,UserMapper.xml就必须有相关的声明。xml中的id对应接口中的方法名,resultType对应了返回的类型
查询方法(全部对象):
接口:
//查询全部用户 List<User> getUserList();
xml:
<select id="getUserList" resultType="com.leo.pojo.User"> select * from mybatis.user </select>
查询方法(条件查询)
接口:
//根据Id查询用户 User getUserById(int id);
xml:
<select id="getUserById" parameterType="int" resultType="com.leo.pojo.User"> select * from mybatis.user where id= #{id} </select>
当需要传递参数时,用#{}来进行传递
注意:增删改方法需要提交事务:sqlSession.commit();
插入:
//插入用户 int insertUser(User user);
<insert id="insertUser" parameterType="com.leo.pojo.User"> insert into mybatis.user(id, name, pwd) values (#{id},#{name},#{pwd}) </insert>
修改:
//修改用户 int UpdateUser(User user);
<update id="UpdateUser" parameterType="com.leo.pojo.User"> update mybatis.user set name=#{name},pwd=#{pwd} where id=#{id} ; </update>
删除:
//删除用户 int deleteUser(int id);
<delete id="deleteUser" parameterType="com.leo.pojo.User"> delete from mybatis.user where id=#{id}; </delete>
以上方法可以实现简单的增删改查。
此外,还可以进行简单的模糊查询:
//模糊查询 List<User> getUserLike(String value);
<select id="getUserLike" resultType="com.leo.pojo.User"> select * from mybatis.user where name like#{value}; </select>
当表中的字段比较多时,如果我们想要修改一条记录的部分字段,或者添加一个记录(只有部分字段,其余为null时),如果使用完整的update、insert方法,就会显得非常复杂,因为不想修改(为null的部分需要手动添加),此时可以采用map的方式来进行操作
接口中:
//修改用户(部分数据) int UpdateUser2(Map<String,Object> map);
xml:
<update id="UpdateUser2" parameterType="map" > update mybatis.user set name=#{userName},pwd=#{userPwd} where id=#{userId} ; </update>
注意:其中的parameterType从User类,改成了map(通过map操作),sql语句不变
测试方法:
@Test public void test4(){ SqlSession sqlSession = MybatisUtils.getSqlSession();//获取sqlSession UserMapper mapper = sqlSession.getMapper(UserMapper.class); Map<String, Object> map = new HashMap<String, Object>();//创建map map.put("userId",7);//往map中添加键值对,其中key与xml文件中的命名对应 map.put("userName","大强子"); mapper.UpdateUser2(map); sqlSession.commit();//注意提交事务 sqlSession.close(); }