Mybatis学习笔记-CRUD
namespace
namesapce中的包名需与Dao/Mapper接口的包名一致
SELCET
选择,查询语句
- id:对应namespace中的方法;
- resultType:Sql语句执行的返回值(Class);
- parameterType:参数类型;
INSERT&UPDATE&DELETE
编写步骤
- 编写接口
// 根据ID查询用户
User getUserById(int id);
// Insert User
int addUser(User user);
// Delete User By ID
int delUser(int id);
// Update User
int updateUser(User user);
- 编写mapper中的sql语句
<!--根据ID查询用户-->
<select id="getUserById" parameterType="int" resultType="cn.iris.pojo.User">
SELECT * FROM user WHERE id = #{id}
</select>
<!--添加用户
对象中的属性可直接取出()无需调用方法-->
<insert id="addUser" parameterType="cn.iris.pojo.User">
INSERT INTO user(id, name, pwd) VALUES (#{id},#{name},#{pwd})
</insert>
<!--根据ID删除用户-->
<delete id="delUser" parameterType="int">
DELETE FROM user WHERE id=#{id}
</delete>
<!--根据ID更新用户信息-->
<update id="updateUser" parameterType="cn.iris.pojo.User">
UPDATE user SET name=#{name},pwd=#{pwd} WHERE id=#{id}
</update>
- 测试
@Test
public void getUserByIdTest() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.getUserById(1);
System.out.println(user);
sqlSession.close();
}
@Test
public void addUserTest(){略}
@Test
public void updateUserTest(){略}
@Test
public void deleteUserTest(){略}
所有增删改操作均需要提交事务(sqlsession.commit)!!!
排错指南
- namespace 包名用'.'
<!--绑定对应的Dao/Mapper接口-->
<mapper namespace="cn.iris.dao.UserMapper">
- Mybatis配置文件
<mappers>
<mapper resource="cn/iris/dao/userMapper.xml"/>
</mappers>
模糊查询
- Java代码执行时带上通配符(xml中#{}识别为变量,防止sql注入)
List<User> userList = mapper.getUserListLike("%艾%");
- sql拼接中加入通配符
SELECT * FROM user WHERE name like "%"+#{value}+"%";