这一篇文章主要写实现增删改查的基本方法.
在这个框架里, 方法放在controller文件中, 相当于servlet; mapper 相当于dao的实现类; 而sql语句放在mappers文件夹的xml文件之中;
连接关系上, 参考上面的"MyBatis的处理流程图". 用文字表述如下:
(一) controller类
controller文件中, 通过 Autowired标签将mapper实体化, 从而能够使用dao中封装的方法来实现功能.
注意
@RestController
@Slf4j
两个标签不能少.
@RestController
@Slf4j
public class TestController {
@Autowired(required = false)
private UserDAO dao;
@RequestMapping("/login")
public String login(String userName,String password){
User login = dao.login(userName, password);
if (login != null){
return "登录成功!";
}else {
return "登录失败!";
}
}
@RequestMapping("/insertUser")
public int insertUser(){
int count = dao.insert(new User(3L,"tom2","123"));
return count;
}
@RequestMapping("/showAllUser")
public List<User> showAllUser(){
List<User> users = dao.selectList(null);
return users;
}
@RequestMapping("/select")
public User t4(){
User user = dao.selectById("1");
return user;
}
@RequestMapping("/update")
public int t5(){
int mark = dao.updateById(new User(2L, "mark", "123"));
return mark;
}
@RequestMapping("/deleteIds")
public int t6(){
int i = dao.deleteBatchIds(Arrays.asList(4L, 5L, 6L));
return i;
}
@RequestMapping("/deleteByid")
public int t7(){
int count = dao.deleteById(2L);
return count;
}
}
一次删除多个内容, 使用dao.deleteBatchIds(Arrays.asList())方法.
(二) dao类
dao文件在这里是一个interface接口, 继承了BaseMapper<实体类> 类, dao文件中放定义的方法.
那么会有一个疑问, 方法中的 具体内容我们没有写, 但是功能却能实现?
其实我们还需要写sql语句. 但实际上想要实现的功能, 除了sql语句外, 就是对结果进行模板化的判断. 在这个企业级框架中, 这些都被处理了, 于是我们只需要写"sql语句", "方法的壳儿", 并搭建起来调用方法的结构就可以了.
package demo.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import demo.entity.User; public interface UserDAO extends BaseMapper<User> { public User login(String userName,String password); public int addUser(User user); public int updateUser(User user); }
(三) dao和xml文件的连接
在这个框架中, sql语句写在xml文件里, 文件命名例如UserMapper.xml, 在这里进行sql语句和方法所传参数的拼接.
注意: namespace属性定位dao类的相对位置; 方法的返回值如果是实体类, 需要手动写实体类的位置, 即 resultType属性.
<!--以下是UserMapper.xml的具体内容-->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="demo.dao.UserDAO">
<select id="login" resultType="demo.entity.User">
select * from t_user where user_name = #{userName} and password = #{password}
</select>
<insert id="addUser">
insert into t_user (id,user_name,password) values(#{id},#{userName},#{password})
</insert>
<update id="updateUser">
update t_user set user_name=#{userName}, password = #{password} where id =#{id};
</update>
<delete>
</delete>
</mapper>
其中 id="" 的部分, 是 与dao中的方法进行的匹配.