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层最简单的服务器的开发。
相关文章推荐
- Mybatis基于注解结合Java编写Sql语句进行CRUD
- Mybatis结合Spring注解自己主动扫描源代码分析
- 基于全注解的Spring3.1 mvc、myBatis3.1、Mysql的轻量级项目
- Spring 2.5.6.SEC01 基于注解的表单提交、验证框架、 View端采用模板语言Jangod
- springmvc+mybatis下基于注解的Atomikos分布式事务配置
- spring mvc+mybatis+ spring 基于全注解事务配置
- 基于全注解的Spring3.1 mvc、myBatis3.1、Mysql的轻量级项目Demo(转)
- SSM简单整合(Mybatis,Spring,SpringMVC,基于注解和xml文件配置)
- [置顶] 基于注解的mybatis整合spring开发流程?
- 四、初学SpringMVC+Mybatis之Spring基于注解的组件扫描
- J2EE项目使用自定义注解实现基于SpringMVC + Mybatis + Mysql的读写分离
- SSHM(Spring,SpringMVC,Hibernate,Mybatis)基于xml文件和注解(@Annotation)
- 基于maven的SpringMVC,Spring,MyBatis的全注解配置
- MyBatis 基于注解的增删改查示例(Spring IOC注入)
- Spring3.2.0-mybatis3.2.0 基于全注解搭建的后台框架-基础版
- Spring + Mybatis 基于注解的事务
- 基于全注解的Spring3.1 mvc、myBatis3.1、Mysql的轻量级项目【转】
- 基于注解spring4.*,mybatis3.*最简单的SSM整合
- Spring Boot基础入门之基于注解的Mybatis
- 基于注解的mybatis和spring整合