CRUD
1.namespace
namespace中的包名要和Dao接口的包名一致
2.select
选择,查询语句
- id:对应的namespace中的方法名
- resultType:SQL语句执行的返回值 !
- parameterType:参数类型
1.编写接口
//根据ID查询用户
User getUserById(int id);
2.编写对应的Mapper中的SQL语句
<!-- 根据ID查询用户-->
<select id="getUserById" resultType="com.lwq.pojo.User" parameterType="int">
select * from mybatis.user where id=#{id};
</select>
3.测试
@Test
public void getUserById() {
//获取sqlSession对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
//获取UserMapper接口对象
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//执行方法
User userById = mapper.getUserById(1);
System.out.println(userById);
}
3.Insert
1.编写接口
//insert一个用户 插入一个用户
int addUser(User user);
2.编写对应的Mapper中的SQL语句
<!-- 对象中的属性可以直接取出来-->
<!-- insert一个用户 插入一个用户-->
<insert id="addUser" parameterType="com.lwq.pojo.User">
insert into mybatis.user(id, name, pwd) values(#{id},#{name},#{pwd});
</insert>
3.测试
@Test
//插入操作
public void addUser() {
User user = new User(8, "小白", "123456");
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int addUser = mapper.addUser(user);
if (addUser > 0) {
System.out.println("提交成功");
}
//提交事务
sqlSession.commit();
//关闭连接
sqlSession.close();
}
4.Update
1.编写接口
//修改用户
int updateUser(User user);
2.编写对应的Mapper中的SQL语句
<!-- 修改用户-->
<update id="updateUser" parameterType="com.lwq.pojo.User">
update mybatis.user set name=#{name},pwd=#{pwd} where id=#{id};
</update>
3.测试
@Test
//更新操作
public void updateUser() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.updateUser(new User(8, "小花", "6666"));
sqlSession.commit();
sqlSession.close();
}
5.Delete
1.编写接口
//删除一个用户
int deleteUser(int id);
2.编写对应的Mapper中的SQL语句
<!-- 删除用户-->
<delete id="deleteUser" parameterType="com.lwq.pojo.User">
delete from mybatis.user where id=#{id};
</delete>
3.测试
@Test
//删除操作
public void deleteUser() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.deleteUser(12);
sqlSession.commit();
sqlSession.close();
}
6.万能的Map
假设,我们的实体类,或者数据库中的表,字段或者参数过多,我们应该考虑使用map
<!-- 万能的map-->
<!-- 传递map的key-->
<insert id="addUser2" parameterType="map">
insert into mybatis.user(id, name, pwd) values(#{userid},#{username},#{password});
</insert>
//万能的Map
int addUser2(Map<String,Object> map);
@Test
//插入操作
public void addUser2() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
HashMap<String, Object> HashMap = new HashMap<String, Object>();
HashMap.put("userid",16);
HashMap.put("username","无情");
HashMap.put("password","123456");
int addUser = mapper.addUser2(HashMap);
if (addUser > 0) {
System.out.println("提交成功");
}
//提交事务
sqlSession.commit();
//关闭连接
sqlSession.close();
}
- map传递参数,直接在SQL中取出key就行了 【parameterType=“map”】
- 对象传递参数,直接在SQL中取出对象的属性就行了【parameterType=“Object”】
- 只有一个基本类型参数的情况下,可以直接在SQL中取到
7.模糊查询怎么写
1.Java代码执行的时候,需要传递通配符%%
List<User> userLike = mapper.getUserLike("%李%");
2.在SQL拼接中使用通配符
select * from mybatis.user where name like "%"#{value}"%";