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>

在映射文件中使用别名:

 

posted @ 2024-01-27 14:37  和哗  阅读(22)  评论(0编辑  收藏  举报