快速入门
//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)); } }
配置SQL提示
JDBC
数据库连接池
lombok
进阶
MyBatis crud
这些方法主要在mapper
中写crud方法,并且加上对应的注解
1. 删除
mybatis日志输出在yaml配置文件中配置日志开启,具体可见下面截图
SQL注入,参数占位符
解决上去了注入,生成预编译SQL
#{}:参数传递
${}:表名、列名进行动态设置
两者{}中放置的都是实体类中的属性
2. 插入(insert)
主键返回 需要在方法上增添Options
注解,并标明属性值
3. 更新(update)
4. 查询(select)
解决查询出来为null的方法
- 在方法查询SQL中起别名,使SQL中的字段映射与实体类属性值映射
- 在方法中添加@Results和@Result 注解
- 在yaml中配置驼峰命名法 (在方法中继续使用原SQL即可)
条件查询
解决模糊查询的SQL注入问题
- 接口方法,使用${name}
- 使用原SQL语句中的concat(字符串拼接),直接在SQL语句中进行解决。
5. xml配置文件(映射)
在mybatis中有两种方法进行mapper方法中的SQL书写,一种是直接在方法中书写,另外一种则是xml文件映射
6. 动态SQL
6.1. if标签
用if标签来指定查询,也就是动态SQL
引入where动态判断是否需要where后面的查询语句
引入set标签,解决 update标签后面的set问题
6.2. foreach标签
常用于批量操作中,例如,删除delete in 或者select in
6.3. sql include标签