21.05.05---mybatis---学习记录

21.05.05

resultType结果类型

指sql语句执行完毕后,数据转为的java对象
处理方式:
1.mybatis执行sql语句,然后mybatis调用类的无参数构造方法,创建对象
2.mybatis把ResultSet指定列值付给了同名的属性

定义别名

在mybatis主配置文件中定义
第一种方式 typeAliases
可以指定一个类型 一个自定义别名
type:自定义类型的全限定名称
alias:别名

<typeAliases>
	<typeAlias type="domain.Student" alias="stu" />
</typeAliases>

第二种方式
name是包名,这个包中的所有类,类名就是别名(类名不区分大小写)

<package name="com.domain">

查询返回map

resultMap:结果映射,指定列名和java对象的属性对应关系
1)你自定义列值赋值给哪个属性
2)当你的列名和属性名不一样是,一定使用resultMap
resultMap和resultType不要一起用

1.列名是map的key,列值是map的value
2.只能最多返回一行记录
使用resultMap
1)先定义resultMap
2)在select标签,使用resultMap来引用定义
id:自定义名称,表示定义的resultMap
type:java类型的全限定名称

<resultMap id="studentMap" type="com.domain.Student">
	<!--
		主键列,使用id标签
		column:列名
		property:java类型的属性名
	-->
	<id column="" property="">
	<!--非主键类,使用result-->
	<result column="name" property="name">
</resultMap>

在这里插入图片描述

动态sql

sql的内容是变化的,可以根据条件获取到不同的sql语句,主要是where部分发生变化
(拼接sql语句)
动态sql的事项,使用的是mybatis提供的标签
1)是判断条件的
例:
dao

List<Student> selectStudentIf(Student student);

dao.xml

<select id="selectStudentIf" resultType="com.node.domain.Student">
        select id,name,age,email from student
        where 1=1
        <if test="name!=null and name!='' ">
            and name=#{name}
        </if>
        <if test="age>0">
            and age>#{age}
        </if>
    </select>

测试代码

@Test
    public void testSelectById(){
        SqlSession sqlSession= MyBatisUtils.getSqlSession();
        StudentDao dao=sqlSession.getMapper(StudentDao.class);

        Student student =new Student();
        student.setName("lisi");
        student.setAge(18);
        List<Student> students=dao.selectStudentIf(student);
        for(Student stu:students){
            System.out.println("if=="+stu);
        }

    }

2)用来包含多个的,当多个if有一个成立的,会自动增加一个where关键字,并去掉if中多余的and,or等。
例:
dao

List<Student> selectStudentWhere(Student student);

dao.xml

<select id="selectStudentWhere" resultType="com.node.domain.Student">
        select id,name,age,email from student
        <where>
            <if test="name!=null and name!='' ">
                name=#{name}
            </if>
            <if test="age>0">
                or age>#{age}
            </if>
        </where>
    </select>

测试代码

@Test
    public void testSelectByWhere(){
        SqlSession sqlSession= MyBatisUtils.getSqlSession();
        StudentDao dao=sqlSession.getMapper(StudentDao.class);

        Student student =new Student();
        student.setName("lisi");
        student.setAge(18);
        List<Student> students=dao.selectStudentWhere(student);
        for(Student stu:students){
            System.out.println("if=="+stu);
        }

    }

3)循环java中的数组,list集合的。主要用于sql的in语句中

collection:表示传入过来的参数的数据类型。该参数为必选。
item: 自定义的 循环体中的具体对象。在 list 和数组中是其中的对象,在 map 中是 value,该参数为必选。(它是每一个元素进行迭代时的别名)
open:表示该语句以什么开始
close:表示该语句以什么结束
separator:表示在每次进行迭代之间以什么符号作为分隔符

例1:
dao

 //foreach 用法一
    List<Student> selectForeachOne(List<Integer> idlist);

dao.xml

 <select id="selectForeachOne" resultType="com.node.domain.Student">
        select * from student where id in
        <foreach collection="list" item="myid" open="(" close=")" separator=",">
            #{myid}
        </foreach>
    </select>

测试代码

@Test
    public void testSelectForEach(){
        SqlSession sqlSession= MyBatisUtils.getSqlSession();
        StudentDao dao=sqlSession.getMapper(StudentDao.class);

        List<Integer> list=new ArrayList<>();
        list.add(1001);
        list.add(1002);
        list.add(1003);

        List<Student> students=dao.selectForeachOne(list);
        for(Student stu:students){
            System.out.println("foreach--one"+stu);
        }

    }

例2:
dao

//foreach 用法二
    List<Student> selectForeachTwo(List<Student> stuList);

dao.xml

<select id="selectForeachTwo" resultType="com.node.domain.Student">
        select * from student where id in
        <foreach collection="list" item="stu" open="(" close=")" separator=",">
            #{stu.id}
        </foreach>
    </select>

测试代码

@Test
    public void testSelectForEachTwo(){
        SqlSession sqlSession= MyBatisUtils.getSqlSession();
        StudentDao dao=sqlSession.getMapper(StudentDao.class);

        List<Student> stuList =new ArrayList<>();
        Student s1=new Student();
        s1.setId(1002);
        stuList.add(s1);

        s1=new Student();
        s1.setId(1003);
        stuList.add(s1);

        List<Student> students=dao.selectForeachTwo(stuList);
        for(Student stu:students){
            System.out.println("foreach--one"+stu);
        }

    }

sql片段

sql代码片段,就是复用一些语句
1)先定义 sql语句 ,表明,字段等
2)再使用,

<!--定义sql片段-->
    <sql id="studentSql">
        select id,name,age,email from student
    </sql>
    
    <select id="selectStudentIf" resultType="com.node.domain.Student">
        <include refid="studentSql"></include>
        ..........
     </select>
### 回答1: alcor_u3_mp_v21.05.10.00.s是一个文件或者固件版本号。根据命名规则可以推断出它可能与某个设备的固件或驱动程序相关。这个版本号的最后一部分"s"可能指示它是一个稳定版本,因为稳定版本通常以字母s结尾。 根据命名中的其他部分,"alcor_u3"可能指的是设备的型号或厂商名称。"mp"可能是"mass production"的缩写,表示这个版本是用于批量生产的。"v21.05.10.00"是版本号的具体标识,可能表示这个版本发布于2021年5月10日。 根据这些信息,我们可以猜测这个文件或固件可能是为某个设备的正常运行、稳定连接或是性能提升而发布的。可能的情况是,这是为某个USB存储设备、闪存驱动器或其他类型的存储设备的驱动程序或固件版本。 在使用或升级设备的过程中,我们应该遵循厂商提供的使用指南,并在系统备份数据的情况下谨慎安装新的固件或驱动程序。如果遇到使用问题,可以联系设备的制造商或寻求专业技术支持。 ### 回答2: alcor_u3_mp_v21.05.10.00.s 是一个固件版本号。这个固件版本号属于 Alcor 公司生产的 U3 系列产品的固件版本之一。 固件是嵌入式设备上的一种软件,通常用于控制和管理设备的硬件功能。固件版本号通常表示了固件的年份、月份和修订版本。在这个版本号中,v21.05.10.00 表示这个固件的制作年份是 2021 年,月份是 5 月,修订版本是 10。而 ".s" 则可能表示了这个固件的类型或者其他特定信息。 要了解固件版本的具体内容和更新说明,我们需要参考 Alcor 公司发布的相关文档或者联系他们的客户支持。他们会提供有关这个固件版本的具体更新信息、改进之处和可能解决的问题等内容。 固件的更新通常可以带来性能改进、错误修复、安全增强等好处。所以,如果您是 U3 系列产品的用户,并且固件版本较旧,您可以考虑将设备上的固件升级到 alcor_u3_mp_v21.05.10.00.s,以获得更好的用户体验和安全性。 总之,alcor_u3_mp_v21.05.10.00.s 是 Alcor 公司生产的 U3 系列产品的固件版本号。这个版本的固件可以通过更新设备上的固件来提供性能改进和错误修复等好处。 ### 回答3: alcor_u3_mp_v21.05.10.00.s是指一个固件版本号或固件文件名。固件是指存储在设备内部的软件程序,用于控制设备硬件的操作和功能。在这个版本中,可能是指Alcor U3系列产品的固件版本为21.05.10.00。这个版本的固件可能是为了解决之前版本中存在的一些问题或改进设备的性能而发布的更新版本。具体的功能和改进可能是根据设备的类型和厂商的要求而有所不同。为了更新设备的固件,通常需要下载固件文件并按照设备制造商提供的更新指南进行操作。更新固件可以提供更好的稳定性、性能和安全性,并且可能还会修复一些已知的错误或漏洞。建议在更新固件之前备份设备上的重要数据,以防在更新过程中发生意外事件。同时,要确保下载的固件文件与设备的型号和版本相匹配,并按照制造商的说明进行正确操作,避免对设备造成不可逆的损坏。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值