Mybatis02

一、Limit分页

1、语法

SELECT * FROM table LIMIT stratIndex,pageSize   //第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目 
SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15 
#如果只给定一个参数,它表示返回最大的记录行数目:   
SELECT * FROM table LIMIT 5; //检索前 5 个记录行  
#换句话说,LIMIT n 等价于 LIMIT 0,n。

2、实例

   //分页
    List<User> limitUser(Map<String,Integer> map);
	
	<!--    分页-->
    <select id="limitUser" parameterType="map" resultType="com.kuang.pojo.User">
        select * from user limit #{startIndex},#{pageSize}
    </select>
	
	    //分页
    @Test
    public void limitUser() {
        SqlSession session = MybatisUtils.getSession();
        UserMapper mapper = session.getMapper(UserMapper.class);
        int currentPage = 1;  //第几页
        int pageSize = 2;  //每页显示几个
        Map<String,Integer> map = new HashMap<String,Integer>();
        map.put("startIndex",(currentPage-1)*pageSize);
        map.put("pageSize",pageSize);
        List<User> users = mapper.limitUser(map);
        for (User user: users){
            System.out.println(user);
        }
        session.close();
    }

二、使用注解开发

1、改造MybatisUtils工具类的getSession( ) 方法,重载实现。

     //获取SqlSession连接
 public static SqlSession getSession(){
        return getSession(true);    //事务自动提交
    }
public static SqlSession getSession(boolean flag){    
        return sqlSessionFactory.openSession(flag);
    }

2、实例

    //使用注解开发_查询全部用户
    @Select("select * from user")
    List<User> selectUsera();

    //使用注解开发_删除语句
   @Delete("delete from user where id=#{ida}")
    int deleteuser(@Param("ida") int id);

3、关于@Param
@Param注解用于给方法参数起一个名字。以下是总结的使用原则:
 在方法只接受一个参数的情况下,可以不使用@Param。
 在方法接受多个参数的情况下,建议一定要使用@Param注解给参数命名。
 如果参数是 JavaBean , 则不能使用@Param。
 不使用@Param注解时,参数只能有一个,并且是Javabean。

三、一对多和多对一的处理

1、搭建查询环境
2、多对一(多个学生对一个老师)
(1)关于Mapper.xml文件中:
resultMap 结果映射
id – 一个 ID 结果;标记出作为 ID 的结果可以帮助提高整体性能
result – 注入到字段或 JavaBean 属性的普通结果
association – 一个复杂类型的关联;许多结果将包装成这种类型;嵌套结果映射 – 关联可以是 resultMap 元素,或是对其它结果映射的引用
collection – 一个复杂类型的集合;嵌套结果映射 – 集合可以是 resultMap 元素,或是对其它结果映射的引用

property 需要映射到JavaBean 的属性名称。
column 数据表的列名或者标签别名。
javaType 一个完整的类名,或者是一个类型别名。
(3)
接口方法编写:

public interface StudentMapper {
    public  List<Student> getStudents();
}

编写对应的mapper文件:

<mapper namespace="com.kuang.dao.StudentMapper">
    <select id="getStudents" resultMap="StudentTeacher" >
        select s.id sid, s.name sname , t.name tname
        from student s,teacher t
        where s.tid = t.id
    </select>
    <resultMap id="StudentTeacher"  type="com.kuang.pojo.Student">
        <id property="id" column="sid"/>
        <result property="name" column="sname"/>
        <!--关联对象property 关联对象在Student实体类中的属性-->
        <association property="teacher" javaType="com.kuang.pojo.Teacher">
            <result property="name" column="tname" />
        </association>
    </resultMap>
</mapper>

测试:

public void test1() {
    SqlSession session = MybatisUtils.getSession();
    StudentMapper mapper = session.getMapper(StudentMapper.class);
    List<Student> students = mapper.getStudents();
    for(Student student:students){
        System.out.println(student);
        session.close();
    }
}

3、一对多
接口方法编写:

public interface TeacherMapper {
    List<Teacher> getTeacher(int id);
}

编写对应的mapper文件:

<mapper namespace="com.kuang.dao.TeacherMapper">
    <select id="getTeacher" resultMap="TeacherStudent" >
        select s.id sid, s.name sname , t.name tname, t.id tid
        from student s,teacher t
        where s.tid = t.id and t.id=#{id}
    </select>
    <resultMap id="TeacherStudent" type="com.kuang.pojo.Teacher">
        <result property="name" column="tname" />
        <collection property="students"  ofType="com.kuang.pojo.Student" >
            <result property="id" column="sid" />
            <result property="name" column="sname" />
            <result property="tid" column="tid"/>
        </collection>
    </resultMap>
</mapper>

四、动态SQL

1、

  • if
  • choose (when, otherwise)
  • choose (when, otherwise)
    • trim (where, set)
    • foreach

备注:
mybatis_01
mybatis_02:配置
mybatis_03:分页
mybatis_04:注解
mybatis_05:多对一的处理
mybatis_06:一对多的处理
mybatis_07:动态SQL

org.apache.ibatis.binding.BindingException是MyBatis框架中的一个异常,它表示绑定语句无效或未找到。在你提供的引用中,出现了两个不同的错误信息,分别是com.mybatis.mapper.OrdersMapper.finarray和com.cloud.lowcode.mapper.UserMapper.queryByParam。 这些错误信息表明在MyBatis的映射文件中找不到对应的绑定语句。绑定语句是指在映射文件中定义的SQL语句,用于执行数据库操作。 要解决这个问题,你可以按照以下步骤进行操作: 1. 确保映射文件中存在对应的绑定语句。检查com.project_mybatis02.mapper.Mkk映射文件中是否定义了名为list的绑定语句。 2. 检查绑定语句的命名是否正确。确保绑定语句的名称与映射文件中定义的名称完全一致,包括大小写。 3. 检查映射文件的路径是否正确。确认映射文件的路径与MyBatis配置文件中的路径一致。 4. 检查映射文件是否正确加载。确保映射文件已经正确加载到MyBatis的配置中。 5. 检查映射文件中的命名空间是否正确。确认映射文件中的命名空间与Mapper接口的包路径一致。 6. 检查Mapper接口的方法名是否与绑定语句的id一致。确保Mapper接口中的方法名与映射文件中绑定语句的id一致。 7. 检查Mapper接口的包路径是否正确。确认Mapper接口的包路径与映射文件中的命名空间一致。 8. 检查MyBatis的配置文件是否正确加载了映射文件。确认MyBatis的配置文件中已经正确加载了映射文件。 9. 检查数据库连接是否正常。确保数据库连接配置正确,并且数据库中存在对应的表和字段。 10. 如果以上步骤都没有解决问题,可以尝试重新编译和部署项目,确保所有的文件都已经正确部署。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值