CRUD编写并测试
1. namespace
namespace中的包要和Dao/mapper接口的包名一致
2.select
选择,查询语句
-
id:就是对应的namespace中的方法名:
-
resultType:Sql语句执行的返回值!
-
parameterType:参数类型
步骤
-
编写接口
public interface UserMapper { //查阅全部用户 List<User> getUserList(); //根据id查询用户 User getUserById(int id); //insert一个用户 int addUser(User user); //修改用户 int updateUser(User user); //删除一个用户 int deleteUser(int id); }
-
编写对应的mapper中的SQL语句
<mapper namespace="com.dao.UserMapper"> <!--select语句--> <select id ="getUserList" resultType="com.pojo.User"> select * from mybatis.user </select> <select id="getUserById" parameterType="int" resultType="com.pojo.User"> select * from mybatis.user where id = #{id} </select> <insert id="addUser" parameterType="com.pojo.User"> insert into mybatis.user(id, name, password) values(#{id}, #{name}, #{password}); </insert> <update id="updateUser" parameterType="com.pojo.User"> update mybatis.user set name = #{name}, password = #{password} where id = #{id}; </update> <delete id="deleteUser" parameterType="int"> delete from mybatis.user where id = #{id}; </delete> </mapper>
-
测试
public class UserDaoTest { @Test public void test(){ //1.获取sqlSession连接对象 SqlSession sqlSession = MybatisUtils.getSqlSession(); //执行MySQL UserMapper userDao = sqlSession.getMapper(UserMapper.class); List<User> userList = userDao.getUserList(); for(User user: userList){ System.out.println(user); } sqlSession.close(); } @Test public void getUserById(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class); User user = userMapper.getUserById(2); System.out.println(user); sqlSession.close(); } //增删改操作 @Test public void addUser(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class); int rs = userMapper.addUser(new User(4,"HeyMan", "123098")); if(rs > 0){ System.out.println("插入数据成功!"); } //提交事务 sqlSession.commit(); sqlSession.close(); } @Test public void updateUser(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class); userMapper.updateUser(new User(4, "Liniy", "123409")); //修改后一定要提交事务 sqlSession.commit(); sqlSession.close(); } @Test public void deleteUser(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class); userMapper.deleteUser(4); sqlSession.commit(); sqlSession.close(); } }
3.Insert
<insert id="addUser" parameterType="com.pojo.User"> insert into mybatis.user(id, name, password) values(#{id}, #{name}, #{password}); </insert>
4.Update
<update id="updateUser" parameterType="com.pojo.User"> update mybatis.user set name = #{name}, password = #{password} where id = #{id}; </update>
5.Delete
<delete id="deleteUser" parameterType="int"> delete from mybatis.user where id = #{id}; </delete>
注意点
-
增删该需要提交事务,不然无法成功
6.分析错误
-
标签匹配问题
-
resource绑定mapper需要使用路径
-
程序配置文件必须符合规范
-
NullPointerException,没有注册到资源
-
输出的xml文件中存在中文乱码
-
maven资源没有导出