参考视频:【狂神说Java】Mybatis最新完整教程IDEA版通俗易懂 点击观看
文章目录
- 使用注解开发
- Mybatis详细的执行流程
- 事务自动提交
- @Param()注解
- [#{}与{}的区别](#{}与{}的区别)
- Lombok的使用
使用注解开发
1、注解在接口上实现

java
package com.findx.dao;
import com.findx.pojo.User;
import org.apache.ibatis.annotations.*;
import java.util.List;
import java.util.Map;
public interface UserMapper {
//查询所有用户
@Select("select * from user")
List<User> getUsers();
//根据id查询用户
@Select("select * from user where id = #{id}")
User getUserById(@Param("id") int id);
//删除
@Delete("delete from user where id = #{uid}")
int deleteUser(@Param("uid") int id);
//添加
@Insert("insert into user (id, name, pwd) values (#{id}, #{name}, #{pwd})")
int addUser(User user);
//修改
@Update("update user set name = #{name}, pwd = #{pwd} where id = #{id}")
int updateUser(User user);
}
2、在配置文件中绑定接口

3、测试使用

java
package com.findx.dao;
import com.findx.pojo.User;
import com.findx.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
public class UserMapperTest {
@Test
//getUsers
public void getUsers() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> users = mapper.getUsers();
for (User user : users) {
System.out.println(user);
}
sqlSession.close();
}
@Test
//getUserById
public void getUserById() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.getUserById(1);
System.out.println(user);
sqlSession.close();
}
@Test
//addUser
public void addUser() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int res = mapper.addUser(new User(11, "findx", "123456"));
if (res > 0) {
System.out.println("插入成功");
}
//sqlSession.commit();设置为true之后就不需要手动提交事务了
sqlSession.close();
}
@Test
//updateUser
public void updateUser() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int res = mapper.updateUser(new User(5, "f111", "123456"));
if (res > 0) {
System.out.println("更新成功");
}
sqlSession.close();
}
@Test
//deleteUser
public void deleteUser() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int res = mapper.deleteUser(11);
if (res > 0) {
System.out.println("删除成功");
}
sqlSession.close();
}
}
Mybatis详细的执行流程



事务自动提交
将getSqlSession方法返回的 sqlSessionFactory.openSession();加入参数设置为true


@Param()注解
@Param()注解用于给方法参数起一个名字。当方法存在多个参数的情况下,建议一定要加上@Param()注解给参数命名。在SQL中引用的就是在@Param()这里设定的属性名字。

基本类型或者String类型需要加上并且引用类型不需要加上
#{}与${}的区别
#{}方式能够很大程度防止sql注入(安全),${}方式无法防止Sql注入。
Lombok的使用
1、在idea中安装Lombok的插件

2、在项目中导入Lombok的jar包

3、在实体类上加注解


