MyBatis注解模式和优化
MyBatis注解模式
之前我们使用xml文件方式实现sql语句的编写,我们也可以使用注解模式编写sql语句。
前面的基本配置一致,不再叙述。
第一步:创建实体类
根据数据库的列名与表名设计实体类
数据库信息:(表名t_student)
实体类:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Student {
private Integer id;
private String name;
private String phone;
private String email;
private String profession;
private Integer age;
}
第二步:创建对应dao接口
使用注解方式语法:
//@注解(sql语句)
@Select("select * from t_student")
//方法
public List<Student> queryAll();
增删改查都有其对应的注解:
添加:@Insert()
删除:@Delete()
修改:@Update()
查询:@Select()
映射接口:
public interface StudentDao {
//通过注解的方式查询所有学生
@Select("select * from t_student")
public List<Student> queryAll();
}
把dao接口放到MyBatis配置文件中
第三步:测试
public class StudentTest {
@Test
public void queryTest() throws Exception{
//读取 MyBatis配置文件资源
//import org.apache.ibatis.io.Resources; 注意这里导入的包必须是ibatis下的
Reader resourceAsReader = Resources.getResourceAsReader("mybatis.xml");
//创建SqlSessionFactory工厂(根据读取mybatis配置文件进行创建)
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsReader);
//开启SqlSession会话对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//通过映射关系,获取映射文件中对应的接口
StudentDao studentDao = sqlSession.getMapper(StudentDao.class);
//通过接口调用相关查询方法
List<Student> studentList = studentDao.queryAll();
//将结果输出
System.out.println("roleList = " + studentList);
}
}
效果展示:
注意:注解的模式适用于单表操作,对于多表操作仍然推荐使用xml文件的方式。
优化
1. 引入数据库属性文件
使用数据库属性文件可以将数据库连接的信息更加方便管理,当数据库信息需要修改时,只需要修改数据库属性文件即可实现全部修改。
①在resources目录下创建一个数据源的属性文件db.properties
#dirver名字随便起,但是需要做到见名知意 driver表示驱动器
driver=com.mysql.cj.jdbc.Driver
#url表示数据库的路径
url=jdbc:mysql://localhost:3306/day124?serverTimezone=Asia/Shanghai
#username表示数据库的名称
username=root
#password表示数据库的密码
password=1qaz2wsx
②在MyBatis配置文件下添加资源文件
2. 可以为实体类起别名
在MyBatis配置文件中使用标签<typeAliases>起别名
<typeAliases>
<!-- typeAlias:为一个指定的实体类起别名 type:实体类的路径全称 alias:为这个实体类起别名-->
<typeAlias type="com.hrc.entity.Role" alias="Role"/>
<!-- package:为包下所有的实体类起一个默认的别名 默认别名是其对应的类名 -->
<package name="com.hrc.entity"/>
</typeAliases>
在映射文件中使用别名:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现