Mybatis 各种查询用法记录

1、中规中矩的配置XML sql语句 类似于generator 自动生成的方式 

dao接口

    User selectByPrimaryKey(Long id);

XML配置,只写了select

<resultMap id="BaseResultMap" type="com.lt.demo.model.User">
    <result column="create_date" jdbcType="TIMESTAMP" property="createDate" />
  </resultMap>
  <sql id="Base_Column_List">
    id, name, age, create_date
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
    select 
    <include refid="Base_Column_List" />
    from user
    where id = #{id,jdbcType=BIGINT}
  </select>

2、参数用默认位置编号代替、用注解别名代替、参数传复杂对象(注意:param 编号从1开始,arg编号从0开始)

dao接口

    User selectByParamNumXml(User user, String name);

    User selectByParamNameXml(@Param("user") User user, @Param("name") String name);

    List<User> selectByListXml(List<Long> list, String name);

xml配置

<sql id="Model_Column_List">
    id, name, age, create_date as createDate
</sql>  

<select id="selectByParamNumXml" resultType="com.lt.cloud.model.User">
    select
    <include refid="Model_Column_List" />
    from user
    where id = #{param1.id} and name = #{param2}
  </select>
    <select id="selectByParamNameXml" resultType="com.lt.cloud.model.User">
        select
        <include refid="Model_Column_List" />
        from user
        where id = #{user.id} and name = #{name}
    </select>

    <select id="selectByListXml" resultType="com.lt.cloud.model.User">
        select
        <include refid="Model_Column_List" />
        from user
        where name != #{arg1} and id in
        <foreach collection="arg0" item="id" open="(" separator="," close=")">
            #{id}
        </foreach>
    </select>

3、用mybatis注解代替xml文件,不仔细讲了,自己看吧,我这时间不多

dao接口

    @ResultMap("BaseResultMap")
    @Select("select id,name,age,create_date from user where id = #{param1} and name = #{param2}")
    User selectByParamNumXmlMapAnnotation(Long id, String name);

    @Select("select id,name,age,create_date as createDate from user where id = #{id} and name = #{name}")
    User selectByParamNameAnnotation(@Param("id") Long id, @Param("name") String name);

    @Results(id = "userResult", value = {
            @Result(property = "createDate", column = "create_date")
    })
    @Select("select id,name,create_date from user where id = #{id} and name = #{name}")
    User selectByParamNameResultAnnotation(@Param("id") Long id, @Param("name") String name);

    @ResultMap("userResult")
    @Select("select id,name,age,create_date from user where id = #{arg0} and name = #{arg1}")
    User selectByArgNumResultMapAnnotation(Long id, String name);

详细请看文档:http://www.mybatis.org/mybatis-3/zh/java-api.html#directoryStructure

4、用spring-data-jpa 不需要额外配置(复杂的连表查询没测试过)还有一个 上级父类 PagingAndSortingRepository,带分页排序的没写

public interface UserRepository extends JpaRepository<User, Long> {

    User findByName(String name);

    User findByNameAndAge(String name, Short age);

    @Query("from User u where u.name like ?1")
    User findUser(String name);

    @Query("from User u where u.name like :name")
    User findUser2(@Param("name") String name);
}

详细请看文档:https://docs.spring.io/spring-data/data-jpa/docs/1.11.14.RELEASE/reference/html/#jpa.query-methods.at-query

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值