您的位置:首页 > 编程语言 > Java开发

MyBatis语言与spring结合编写sql语言(基于注解)

2018-01-28 22:10 423 查看
@Select({"select ", INSERT_FIELDS, " ,count(id) as id from ( select * from ",
TABLE_NAME, " where from_id=#{userId} or to_id=#{userId} order by id desc) tt " +
"group by conversation_id order by id desc limit #{offset},#{limit}"})
List<Message> getConversationList(@Param("userId") int userId,
@Param("offset") int offset,
@Param("limit") int limit);


映射器注解

因为最初设计时,MyBatis 是一个 XML 驱动的框架。配置信息是基于 XML 的,而且 映射语句也是定义在 XML 中的。而到了 MyBatis 3,有新的可用的选择了。MyBatis 3 构建 在基于全面而且强大的 Java 配置 API 之上。这个配置 API 是基于 XML 的 MyBatis 配置的 基础,也是新的基于注解配置的基础。注解提供了一种简单的方式来实现简单映射语句,而 不会引入大量的开销。

注意:不幸的是,Java 注解限制了它们的表现和灵活。尽管很多时间都花调查,设计和 实验上,最强大的 MyBatis 映射不能用注解来构建,那并不可笑。C#属性(做示例)就没 有这些限制,因此 MyBatis.NET 将会比 XML 有更丰富的选择。也就是说,基于 Java 注解 的配置离不开它的特性。

注解:@Select



数据库函数 List getConversationList(@Param(“userId”) int userId)



例子:

public interface UserMapper {

@Select("SELECT * FROM users")
@Results({
@Result(property = "userSex",  column = "user_sex", javaType = UserSexEnum.class),
@Result(property = "nickName", column = "nick_name")
})
List<UserEntity> getAll();

@Select("SELECT * FROM users WHERE id = #{id}")
@Results({
@Result(property = "userSex",  column = "user_sex", javaType = UserSexEnum.class),
@Result(property = "nickName", column = "nick_name")
})
UserEntity getOne(Long id);

@Insert("INSERT INTO users(userName,passWord,user_sex) VALUES(#{userName}, #{passWord}, #{userSex})")
void insert(UserEntity user);

@Update("UPDATE users SET userName=#{userName},nick_name=#{nickName} WHERE id =#{id}")
void update(UserEntity user);

@Delete("DELETE FROM users WHERE id =#{id}")
void delete(Long id);

}


将user_sex、nick_name两个属性在数据库加了下划线和实体类属性名不一致,另外user_sex使用了枚举

@Select 是查询类的注解,所有的查询均使用这个

@Result 修饰返回的结果集,关联实体类属性和数据库字段一一对应, - - 如果实体类属性和数据库属性名保持一致,就不需要这个属性来修饰。

@Insert 插入数据库使用,直接传入实体类会自动解析属性到对应的值

@Update 负责修改,也可以直接传入对象

@delete 负责删除

注意,使用#符号和$符号的不同:

// This example creates a prepared statement, something like select * from teacher where name = ?;
@Select("Select * from teacher where name = #{name}")
Teacher selectTeachForGivenName(@Param("name") String name);

// This example creates n inlined statement, something like select * from teacher where name = 'someName';
@Select("Select * from teacher where name = '${name}'")
Teacher selectTeachForGivenName(@Param("name") String name);


其后在service层对dao层进行相关的注解注入@Autowired

在controller层进行增删改查。完成一个web层最简单的服务器的开发。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: