package com.demo.dao; import com.demo.bean.User; import org.apache.ibatis.annotations.*; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.jdbc.core.SqlProvider; import org.springframework.stereotype.Repository; import sun.security.krb5.internal.PAForUserEnc; import java.util.List; import java.util.Map; /** * 全注解开发Mybatis,省略mapper.xml配置文件,开发更高效 *在properties中添加以下配置,在执行查询后,可以将数据库的NN_NN格式字段,在java结果集对象中自动转换成驼峰命名参数 * mybatis.configuration.mapUnderscoreToCamelCase=true * @Repository :声明这是一个持久层的接口实例 * @Param:在方法参数的前面写上@Param("参数名"),表示给参数命名,名称就是括号中的内容,#{}取的就是它 */ @Repository public interface UserDao{ /** * 添加 * @param user */ @Insert("insert into user(name,age) values (#{name},#{age})") @Options(useGeneratedKeys = true) public void insert(User user); /** * 查询 * @param id * @return */ @Select("select * from user where id = #{id}") public User findById(Integer id); /** * 更新 * @param name * @param id */ @Update("update user set name = #{name} where id #{id}") public void update(@Param("name")String name,@Param("id")Integer id); /** * 动态sql查询 * @SelectProvider注解用于生成查询用的sql语句,有别于@Select注解,@SelectProvide指定一个Class及其方法,并且通过调用Class上的这个方法来获得sql语句 * @param index * @param offset * @param age * @return */ @SelectProvider(type =SqlProvider.class,method = "getList") public List<User> getPage(@Param("index")int index,@Param("offset")int offset,@Param("age")Integer age); /** * 动态sql生成的内部类 */ class SqlProvider{ public static String getList(Map<String,Object> map){ StringBuffer sql =new StringBuffer(); Integer index =Integer.valueOf(map.get("index").toString()); Integer offset =Integer.valueOf(map.get("offset").toString()); Integer age =Integer.valueOf(map.get("age").toString()); sql.append(" select * from user where 1=1 "); if (age.intValue() != 0){ sql.append(" and age ="+age+" "); } sql.append(" limit "+index+" , "+offset); return sql.toString(); } } }
SpringBoot实现Mybaits全注解开发,省略xml文件,开发更高效
最新推荐文章于 2023-04-03 13:51:17 发布