Mybatis可以使用xml文件来写sql语句,也可以通过注解来编写简单的sql语句,参考官方文档
映射器注解
设计初期的 MyBatis 是一个 XML 驱动的框架。配置信息是基于 XML 的,映射语句也是定义在 XML 中的。而在 MyBatis 3 中,我们提供了其它的配置方式。MyBatis 3 构建在全面且强大的基于 Java 语言的配置 API 之上。它是 XML 和注解配置的基础。注解提供了一种简单且低成本的方式来实现简单的映射语句。
提示
不幸的是,Java 注解的表达能力和灵活性十分有限。尽管我们花了很多时间在调查、设计和试验上,但最强大的 MyBatis 映射并不能用注解来构建——我们真没开玩笑。而 C# 属性就没有这些限制,因此 MyBatis.NET 的配置会比 XML 有更大的选择余地。虽说如此,基于 Java 注解的配置还是有它的好处的。
可以理解为简单的一些语法可以使用注解来编写,比较方便,但是复杂的语句还是要使用xml文件,只有使用xml文件才能体现mybatis的强大功能。
使用注解
在之前的开发中,我们使用mybatis,需要
- 配置文件,
- 然后创建dao接口,定义方法
- 再然后就要创建mapper.xml文件,在mapper.xml文件中编写sql语句,
- 最后再把mapper文件配置在mybatis主配置文件中就可以进行测试了
使用注解的方式,我们可以在dao
接口中直接在方法上写sql语句,不需要创建mapper
文件了
创建一个dao接口:先写一些最简单的语句,例如这些最基本的增删改查的语句,我们可以不使用mapper文件直接使用注解来写
@Select("SELECT id,username,password,gender,regist_time FROM t_user")
List<User> queryUsers();
@Select("SELECT id,username,password,gender,regist_time\n" +
" FROM t_user\n" +
" WHERE id = #{id}")
User queryUserById(@Param("id") Integer id);
@Delete("delete from t_user\n" +
" where id=#{id}")
Integer deleteUser(@Param("id") Integer id);
@Update("update t_user\n" +
" set username=#{username},password=#{password},gender=#{gender},regist_time=#{registTime}\n" +
" where id=#{id}")
Integer updateUser(User user);
@Options(useGeneratedKeys = true, keyProperty = "id") // 自增key,主键为id
@Insert("insert into t_user values(#{id},#{username},#{password},#{gender},#{registTime})")
Integer insertUser(User user);
使用注解也需要在mybatis配置文件中配置mapper
<!-- 注册mapper文件 -->
<mappers>
<mapper class="com.qf.dao.UserDAO"/>
</mappers>
测试上面的方法:
public class MyBatisTest {
@Test
public void test1(){
UserDAO mapper = MyBatisUtil.getMapper(UserDAO.class);
/*List<User> users = mapper.queryUsers();
for (User user : users) {
System.out.println(user);
}
System.out.println("============");
User user = mapper.queryUserById(10011);
System.out.println(user);*/
//mapper.deleteUser(10011);
User new_user = new User(null, "new_user", "1111", true, new Date());
//mapper.insertUser(new_user);
System.out.println("新用户id:"+new_user.getId());
//mapper.updateUser(new User(10015,"张三2","11111",true,new Date()));
MyBatisUtil.commit();
}
}