2Mybatis之CRUD
CRUD
1常用的增删改查
- select
- insert
- update
- delete
2注意点
- id:就是对于的namespace中的方法名
- resultType:Sql语句执行的返回值(只有insert有)
- parameterType:参数类型
- 对象中的属性可以直接取出来
- 增删改需要提交事务!
//UserDao或UserMapper
public interface UserDao {
//获取全部用户
List<User> getUserList();
//根据id查询用户
User getUserById(int id);
//insert一个用户
int addUser(User user);
//修改用户
int updateUser(User user);
//删除用户
int deleteUser(int id);
//模糊查询
List<User> getUserLike(String value);
}
<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- UserMapper.xml-->
<mapper namespace="com.fao.dao.UserDao">
<!-- 获取全部用户 -->
<select id="getUserList" resultType="com.fao.pojo.User">
select * from mybatis.user;
</select>
<!-- 根据id查询用户 -->
<select id="getUserById" parameterType="int" resultType="com.fao.pojo.User">
select * from mybatis.user where id=#{id}
</select>
<!-- 插入一个用户 -->
<!--对象中的属性可以直接取出来-->
<insert id="addUser" parameterType="com.fao.pojo.User" >
insert into mybatis.user(id,name,pwd) values (#{id},#{name},#{pwd})
</insert>
<!-- 修改用户 -->
<update id="updateUser" parameterType="com.fao.pojo.User">
update mybatis.user set name=#{name},pwd=#{pwd} where id=#{id}
</update>
<!-- 删除用户 -->
<delete id="deleteUser" parameterType="int">
delete from mybatis.user where id=#{id}
</delete>
<!-- 模糊查询 -->
<select id="getUserLike" resultType="com.fao.pojo.User">
select * from mybatis.user where name like #{value}
</select>
</mapper>
//测试类
public class UserDaoTest {
//获取全部用户
@Test
public void test(){
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
List<User> userList = mapper.getUserList();
for (User user:userList){
System.out.println(user);
}
sqlSession.close();
}
//根据id查询用户
@Test
public void test2(){
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
User user = mapper.getUserById(1);
System.out.println(user);
sqlSession.close();
}
//新增用户
//增删改需要提交事务
@Test
public void test3(){
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
int res = mapper.addUser(new User(4, "haha", "12333"));
if (res>0){
System.out.println("插入成功");
}
//提交事务
sqlSession.commit();
sqlSession.close();
}
//更改用户
@Test
public void test4(){
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
mapper.updateUser(new User(4,"hehe","123123"));
//提交事务
sqlSession.commit();
sqlSession.close();
}
//删除用户
@Test
public void test5(){
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
mapper.deleteUser(4);
//提交事务
sqlSession.commit();
sqlSession.close();
}
//模糊查询
@Test
public void test7(){
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
//注意%写在这里 防止sql注入
List<User> userLike = mapper.getUserLike("李%");
for (User user:userLike){
System.out.println(user);
}
sqlSession.close();
}
}
3万能Map
- 假设我们的实体类或者数据库中的表,字段或者参数过多,我们应当考虑使用Map
- Map传递参数,直接在sql中取出key即可(parameterType="map")
- 只有一个基本类型参数的情况下,可以直接在SQL中取到
- 多个参数用Map,或者注解
//UserDao或UserMapper
public interface UserDao {
//万能的map 传递map的key
int addUser2(Map<String,Object> map);
}
<!-- UserMapper.xml-->
<mapper>
<insert id="addUser2" parameterType="map" >
insert into mybatis.user(id,name,pwd) values (#{userId},#{userName},#{userPwd})
</insert>
</mapper>
//测试类
@Test
public void test6(){
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
//map好处在于可以随意修改前面值
HashMap<String, Object> map = new HashMap<>();
map.put("userId",5);
map.put("userName","hello");
map.put("userPwd","222222");
mapper.addUser2(map);
sqlSession.commit();
sqlSession.close();
}

浙公网安备 33010602011771号