MyBatis~(贰)
笔记代码
面向接口编程
主要目的就是
解耦
,分层开发中,上层业务不用管具体的实现.使得
规范
和实现
两部分分离,接口作为项目骨架.
注解开发
简单上手
接口上直接注解 SQL 语句
public interface UserMapper {
List<User> getUsers();
}绑定接口
<mappers>
<!--之前是用xml绑定的-->
<!--<mapper resource="Mappers/UserMapper.xml"/>-->
<!--这里换成绑定接口-->
<mapper class="dao.UserMapper"/>
</mappers>实现原理: 通过
反射机制
获取接口中的信息,然后用动态代理
实现业务.调试
原理分析
CRUD
UserMapper
package dao;
import org.apache.ibatis.annotations.*;
import pojo.User;
import java.util.List;
import java.util.Map;
public interface UserMapper {
List<User> getUsers();
/*
基本类型的参数或者String类型,需要加上
引用类型不需要加
如果只有一个基本类型的话,可以忽略,但是建议都加上
我们在SQL中引用的就是我们这里的@Param()中设定的属性名
重要: 这里方法不能重载! 两个同名方法会使MyBatis运行报错(开发时JDK不会报错)
*/
User getUserById(int id);
// 多个参数的情况下,必须加上@Param注解
User getUserByIdAndName(int id, String name);
int addUser(User user);
//注意SQL格式,set 和 where顺序不能颠倒
int updateUser(User user);
int deleteUserById(int id);
}test
package dao;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import pojo.User;
import utils.MyBatisUtils;
import java.util.List;
public class UserMapperTest {
public void getUsers() {
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
List<User> userList = userMapper.getUsers();
for (User user : userList) {
System.out.println(user);
}
sqlSession.close();
}
public void testGetUserById() {
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = userMapper.getUserById(1);
System.out.println(user);
sqlSession.close();
}
public void getUserById() {
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = userMapper.getUserByIdAndName(1, "张三");
System.out.println(user);
sqlSession.close();
}
public void addUser() {
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
int i = userMapper.addUser(new User(7, "七七", "45648"));
if (i > 0)
sqlSession.commit();
sqlSession.close();
}
public void updateUser() {
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
int i = userMapper.updateUser(new User(7, "七七", "12345678"));
if (i > 0)
sqlSession.commit();
sqlSession.close();
}
public void deleteUserById() {
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
if (userMapper.deleteUserById(7) > 0)
sqlSession.commit();
sqlSession.close();
}
}
对应关系
- SQL初始化:
多对一
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ⭐️齐下无贰⭐️!
评论