我是南城余!阿里云开发者平台专家博士证书获得者!
欢迎关注我的博客!一同成长!
一名从事运维开发的worker,记录分享学习。
专注于AI,运维开发,windows?Linux?系统领域的分享!
知识库链接:
//pojo 实体类层
public class User {
private Integer id;
private String name;
private String username;
private String gender;
private Short age;
public User(Integer id, String name, String username,String gender, Short age) {
this.id = id;
this.name = name;
this.username = username;
this.gender = gender;
this.age = age;
}
public User() {
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", username='" + username + '\'' +
", gender=" + gender +
", age=" + age +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public Short getAge() {
return age;
}
public void setAge(Short age) {
this.age = age;
}
}
//业务逻辑层
@Mapper//在运行时,会自动生成该接口的实现类对象(代理对象),并且将该对象交给IOC容器管理
public interface UserMapper {
//查询全部用户对象
@Select("select * from t_user")
public List<User> list();
}
//测试层面
@SpringBootTest
class SpringbootMybatisQuickstartApplicationTests {
@Autowired//将UserMapper 此接口需要在接口前声明@Mapper注解 放入IOC 容器管理的对象创建出来
private UserMapper userMapper;
@Test
void textListUser() {
List<User> list = userMapper.list();
list.stream().forEach(user -> System.out.println(user));
}
}
这些方法主要在mapper
中写crud方法,并且加上对应的注解
mybatis日志输出在yaml配置文件中配置日志开启,具体可见下面截图
SQL注入,参数占位符
解决上去了注入,生成预编译SQL
#{}:参数传递
${}:表名、列名进行动态设置
两者{}中放置的都是实体类中的属性
主键返回 需要在方法上增添Options
注解,并标明属性值
解决查询出来为null的方法
条件查询
解决模糊查询的SQL注入问题
在mybatis中有两种方法进行mapper方法中的SQL书写,一种是直接在方法中书写,另外一种则是xml文件映射
用if标签来指定查询,也就是动态SQL
引入where动态判断是否需要where后面的查询语句
引入set标签,解决 update标签后面的set问题
常用于批量操作中,例如,删除delete in 或者select in