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>
在映射文件中使用别名:
标签:配置文件,数据库,private,MyBatis,注解,优化,public From: https://www.cnblogs.com/gzyhrc/p/17991318