**上文提到如何配置mybatis的xml文件,封装工具类等操作,实现了简单的select查询功能,本文将进一步的解释如何进行其他sql操作,以便对Mybatis进一步了解。 **
- 实现根据id查询用户信息
自定义一个方法
UserMapper.xml
public interface UserMapper {
//根据id查询
User getUserById(int id);
}
UserMapper.xml
<!--id:自定义的方法-->
<!--parameterType:参数类型-->
<!--resultType:返回值类型,此处com.kuang.pojo.User这样表示User类型,之后学了注解后可以替换成另外一种简写-->
<select id="getUserById" parameterType="int" resultType="com.kuang.pojo.User">
select * from mybatis.user where id = #{id}
</select>
测试代码:
@Test
//查询id为1的用户信息
public void getUserById(){
//获取Sqlsession对象后获取接口对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = userMapper.getUserById(1);
System.out.println(user);
sqlSession.close();
}
结果展示
- 插入,修改,删除操作
UserMapper.java
//int表示返回受影响的函数,实际原理本人并不是十分清楚,但是我可以举例提供参考:在mysql的数据库操作时后,如果语句执行错误会返回错误行数,这里的道理也是类似的
//插入一个用户
int addUser(User user);
//修改一个用户
int updateUser(User user);
//删除一个用户
int deleteUser(int id);
UserMapper.xml
<!--这些操作没有返回值类型,不需要resultType-->
<insert id="addUser" parameterType="com.kuang.pojo.User">
<!--需要传入的参数用#{}表示,里面的参数要和实体类的定义一样,不可实体类定义id,这里写ID-->
insert into mybatis.user (id,name,psw) values (#{id},#{name},#{psw});
</insert>
<update id="updateUser" parameterType="com.kuang.pojo.User">
update mybatis.user set name=#{name},psw=#{psw} where id = #{id};
</update>
<delete id="deleteUser" parameterType="int">
delete from mybatis.user where id=#{id};
</delete>
测试代码:
@Test
//添加一个新用户
public void addUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.addUser(new User(4,"赵朗","126543"));
//增删改必须提交一个事务。否则数据库不能最终接收到变动的数据。
sqlSession.commit();
sqlSession.close();
}
@Test
//根据id修改用户name,psw
public void UpdateUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.updateUser(new User(1,"宅佳豪","1785333"));
sqlSession.commit();
sqlSession.close();
}
@Test
//根据id删除用户数据
public void deleteUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.deleteUser(4);
sqlSession.commit();
sqlSession.close();
}
原数据库数据:
数据库修改结果呈现:
总结:封装好一切的基础后,对数据库的操作就简单的关注sql语句上面就好了,这也是数据库的两个方向中 --> 开发 方向最喜欢的方式,不需要过多的关注其他地方,需要注意的是,虽然框架简单了不少操作,后续应该多看看框架源码了解底层原理才更有竞争力,不能因为学了框架就不关注基础操作。