Mybatis学习_02_CRUD操作及配置分析
注意:namespace要与UserMapper接口一致,如下:
<mapper namespace="com.zhaolei.dao.UserMapper">
操作流程:UserMapper接口声明操作--->在UserMapper.xml编写SQL语句---->测试
1、select
1.1、在UserMapper里声明函数:
List<User> getUserList();
1.2、在UserMapper.xml文件里编写对应的代码:
<select id="getUserList" resultType="com.zhaolei.pojo.User">
select * from mybatis.user
</select>
1.3、测试
@Test
public void test(){
//第一步:获得SqlSession对象
SqlSession sqlSession= MybatisUtils.getSqlSession();
UserMapper userMapper =sqlSession.getMapper(UserMapper.class);
List<User> userList= userMapper.getUserList();
for (User user : userList) {
System.out.println(user);
}
sqlSession.close();
}
2、insert
2.1、在UserMapper里声明函数:
//增加用户
int addUser(User user);
2.2、在UserMapper.xml文件里编写对应的代码:
<insert id="addUser" parameterType="com.zhaolei.pojo.User">
insert into mybatis.user (id,name,pwd) values (#{id},#{name},#{pwd})
</insert>
1.3、测试
public void addUser(){
SqlSession sqlSession= MybatisUtils.getSqlSession();
UserMapper Mapper=sqlSession.getMapper(UserMapper.class);
int user = Mapper.addUser(new User(4, "李艳丽", "123987"));
sqlSession.commit();
sqlSession.close();
}
3、update
3.1、在UserMapper里声明函数:
//修改用户
int updateUser(User user);
3.2、在UserMapper.xml文件里编写对应的代码:
<update id="updateUser" parameterType="com.zhaolei.pojo.User">
update mybatis.user set name=#{name},pwd=#{pwd} where id=#{id}
</update>
3.3、测试
public void updateUser(){
SqlSession sqlSession= MybatisUtils.getSqlSession();
UserMapper Mapper=sqlSession.getMapper(UserMapper.class);
int user = Mapper.updateUser(new User(4, "李艳丽", "123111"));
sqlSession.commit();
sqlSession.close();
}
4、delete
4.1、在UserMapper里声明函数:
//删除用户
int deleteUser(int id);
4.2、在UserMapper.xml文件里编写对应的代码:
<delete id="deleteUser" parameterType="int">
delete from mybatis.user where id=#{id}
</delete>
4.3、测试
public void deleteUser(){
SqlSession sqlSession= MybatisUtils.getSqlSession();
UserMapper Mapper=sqlSession.getMapper(UserMapper.class);
int user = Mapper.deleteUser(2);
sqlSession.commit();
sqlSession.close();
}
注:增删改都需要提交事务(sqlSession.commit();),否则数据库不会改变!!!
5、Map
如果数据库中的表格中的字段十分多,当我们对其中一些字段进行操作时,使用上述的四种方法就会极其繁琐,这时引入了Map,使用map可以对数据的某些字段进行操作,更符合实际情况。
5.1、在UserMapper里声明函数:
// 使用Map实现根据ID查询用户
User getUserByID2(Map<String,Object> map);
5.2、在UserMapper.xml文件里编写对应的代码:
<select id="getUserByID2" parameterType="map" resultType="com.zhaolei.pojo.User">
select * from mybatis.user where id=#{userid}
</select>
5.3、测试
public void getUserByID2(){
SqlSession sqlSession= MybatisUtils.getSqlSession();
UserMapper Mapper=sqlSession.getMapper(UserMapper.class);
Map<String,Object> map=new HashMap<String,Object>();
map.put("userid","1"); // 这里可以对Map进行操作
User user = Mapper.getUserByID2(map);
System.out.println(user);
sqlSession.close();
}
6、模糊查询(like)
- 方法一:
//模糊查询,查询姓"赵"的用户
List<User> getUserList2(Map<String,Object> map);
<select id="getUserList2" parameterType="map" resultType="com.zhaolei.pojo.User">
select * from mybatis.user where name like #{username}
</select>
public void getUserList2(){
//第一步:获得SqlSession对象
SqlSession sqlSession= MybatisUtils.getSqlSession();
UserMapper userMapper =sqlSession.getMapper(UserMapper.class);
Map<String,Object> map=new HashMap<String,Object>();
map.put("username","%赵%"); //注意"赵"左右的%%
List<User> userList= userMapper.getUserList2(map);
for (User user : userList) {
System.out.println(user);
}
sqlSession.close();
}
- 方法二(在sql语句中拼接通配符,会引起sql注入)
//模糊查询,查询姓"赵"的用户
List<User> getUserList2(Map<String,Object> map);
<select id="getUserList2" parameterType="map" resultType="com.zhaolei.pojo.User">
select * from mybatis.user where name like '%${username}%' //在sql语句中拼接通配符,会引起sql注入
</select>
public void getUserList2(){
//第一步:获得SqlSession对象
SqlSession sqlSession= MybatisUtils.getSqlSession();
UserMapper userMapper =sqlSession.getMapper(UserMapper.class);
Map<String,Object> map=new HashMap<String,Object>();
map.put("username","赵");
List<User> userList= userMapper.getUserList2(map);
for (User user : userList) {
System.out.println(user);
}
sqlSession.close();
}
注意:方法一与方法二like后的表述,方法一like后是#{username} ,而方法二like后是'%${username}%' ,这里不能使用 # 代替
总结:
- 所有的增删改操作都需要提交事务!
- 接口所有的普通参数,尽量都写上@para参数,尤其是多个参数时,必须写上。
- 字段较多时可以考虑使用map来处理!
- 在SQL的配置文件中,尽量将parameter和resultType都写上!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!