1、namespace
要和dao/mapper的接口的包名相同
2、select
1、编写接口
2、mapper中sql语句
3、测试
选择 查询语句
id:就是对应的namespace中方法名;;
resultType:sql语句执行的返回值
paramerType:sql执行的参数类型
3、insert
4、updata
5、delete
UserMapper 接口文件
public interface UserMapper {
//查询所有用户
List<User> getUerList();
//根据userId查询用户
User getUserById(int id);
//添加用户
void insertUser(User user);
//更新用户
void updataUser(User user);
//删除用户
void delUser(int id);
}
UserMapper.xml
测试类
注意:增删改 需要提交事务才能操作到数据库
public class UserDaoTest {
Map和模糊查询拓展
1、万能map
假设我们的实体类或者数据库中的表、字段或者参数过多,我们应当考虑使用Map!
mapper接口
//传递map为参数
void insertUser2(Map<String,Object> map);
mapper.xml
<!--传递参数为map的 insert-->
<insert id="insertUser2" parameterType="map">
insert into user (id,name,psw) values (#{userId},#{userName},#{password});
<!--values中的名称要与map的key相对应-->
</insert>
测试类
总结:
Map传递参数,直接在sql中取出key即可;【paramerType=“map”】
对象传递参数,直接在sql中取对象的属性即可:
【parameterType=“Object”】
传递只有一个基本类型的参数情况下,可以直接在sql取到
多个参数用map或者注解!
2、模糊查询
1、java代码执行的时候,传递通配符。
public void selectUserLike(){
SqlSession sqlSession = MybatisUntils.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
List<User> userList = userMapper.selectUserLike("%王%");
for (User user : userList) {
System.out.println(user);
}
}
2、在sql中拼接 % 。尽量用这种,代码会更安全
<!--模糊查询-->
<select id="selectUserLike" parameterType="String" resultType="com.zy.pojo.User">
select * from user where name like "%"#{userName}"%"
</select>
分类:
mybatis
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术