CRUD(增删改查)
1、namespace
namespace中的包名要和Dao/Mapper接口的包名一致!
2、select
选择查询语句:
- id:就是对应的namespace中的方法名
- resultType:Sql语句执行的返回值!
- parameterType:参数类型/sql返回值类型
- 增
UserMapper接口中
//insert一个用户
int addUser(User user);
UserMapper实现配置文件中
<!--增加insert一个用户-->
<insert id="addUser" parameterType="com.mybatis.pojo.User">
insert into mybatis.user(id,name,pwd) values (#{id},#{name},#{pwd});
</insert>
测试类中
//增删改需要提交事务
@Test
public void addUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UseMapper mapper = sqlSession.getMapper(UseMapper.class);
mapper.addUser(new User(1,"刘通","111111"));
System.out.println("添加成功");
//提交事务
sqlSession.commit();
sqlSession.close();
}
- 删
UserMapper接口中
//删除一个用户
int delUser(int id);
UserMapper实现配置类中
<!--删除用户通过用户名-->
<delete id="delUser" parameterType="int">
delete from mybatis.user where id=#{id};
</delete>
测试类中
@Test
public void delUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UseMapper mapper = sqlSession.getMapper(UseMapper.class);
mapper.delUser(1);
sqlSession.commit();
sqlSession.close();
}
- 查
UserMapper接口中
//查询全部用户
List<User> getUserList();
//根据id查询用户
User getUserById(int id);
UserMapper实现配置文件中
<!--根据id查询用户-->
<select id="getUserById" parameterType="int" resultType="com.mybatis.pojo.User">
select * from mybatis.user where id=#{id};
</select>
<!--增加insert一个用户-->
<insert id="addUser" parameterType="com.mybatis.pojo.User">
insert into mybatis.user(id,name,pwd) values (#{id},#{name},#{pwd});
</insert>
测试类中
@Test
public void test(){
//第一步,获取SqlSession对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
try{
//执行SQL
//
UseMapper userMapper = sqlSession.getMapper(UseMapper.class);
List<User> userList = userMapper.getUserList();
for(User user : userList){
System.out.println(user);
}
}catch (Exception e){
e.printStackTrace();
}finally {
//关闭sqlSession
sqlSession.close();
}
}
@Test
public void getUserById(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UseMapper mapper = sqlSession.getMapper(UseMapper.class);
User user = mapper.getUserById(1);
System.out.println(user);
sqlSession.close();
}
- 改
UserMapper接口中
//修改用户update
int updateUser(User user);
UserMapper实现配置类中
<!--通过id修改用户-->
<update id="updateUser" parameterType="com.mybatis.pojo.User">
update mybatis.user set name = #{name},pwd = #{pwd} where id = #{id};
</update>
测试类中
@Test
public void updateUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UseMapper mapper = sqlSession.getMapper(UseMapper.class);
int user = mapper.updateUser(new User(1, "刘通", "111111"));
sqlSession.commit();
sqlSession.close();
}
了解一下
万能Map
如果,我们的实体类,或者数据库中的表,字段或者参数过多,我们应当考虑使用Map
UserDao接口
//万能Map
int addUser2();
UserDao实现配置文件
<!--map-->
<insert id="addUser2" parameterType="map">
insert into mybatis.user(id, name, pwd) values (#{userid},#{userName},#{password})
</insert>
测试类
@Test
public void addUser2(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UseMapper mapper = sqlSession.getMapper(UseMapper.class);
Map<String, Object> map = new HashMap<String, Object>();
map.put("userid",5);
map.put("userName","邓健");
map.put("password","555555");
System.out.println("添加成功");
//提交事务
sqlSession.commit();
sqlSession.close();
}
Map传递参数,直接在sql中取出key即可
对象传递参数,直接在sql中去对象的属性即可
只有一个基本类型参数的情况下,可以直接在sql中取到
多个参数用Map,或者用注解
模糊查询
- java代码执行的时候,传递通配符%%
List<User> userList = mapper.getUserLike("%李%");
- 在sql拼接中使用通配符!
select * from mybatis.user where name like "%"#{value}"%";