mybatis初步学习

1.Mybatis是干什么的?解决了什么问题?有什么好处?

答:它是一款轻量级的持久层框架,支持了定制化Sql,存储过程和高级映射。Mybatis避免了所有jdbc代码和手动设置参数以及获取结果集。Mybatis可以使用简单的XMl或注解来配置和映射原生信息,将接口和Java的pojos映射成数据库中的记录。

2. 如何安装mybatis

使用 MyBatis,只需将 mybatis-x.x.x.jar 文件置于 classpath 中即可。如果使用 Maven 来构建项目,则需将下面的 dependency 代码置于 pom.xml 文件中。

 <dependency>

       <groupId>org.mybatis</groupId>

       <artifactId>mybatis</artifactId>

       <version>3.3.0</version>

</dependency>

3.mybatis使用的流程,实现的流程?

         1核心配置文件:xml文件,全局的配置文件,放到maven项目下的resources中,或者web项目下的src, 在这里我们要配置数据源,事务的处理,加载其他的mapper配置文件。

简单实例:

//头文件

<?xml version="1.0"encoding="UTF-8" ?>

<!DOCTYPE configuration

PUBLIC "-//mybatis.org//DTD Config3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

         <!--加载属性文件 -->

         <propertiesresource="db.properties">

                   <!--properties中还可以配置一些属性名和属性值  -->

                   <!--<property name="jdbc.driver" value=""/> -->

         </properties>

         <!--全局配置参数,需要时再设置 -->

         <!--<settings>

         </settings>-->

         <!--和spring整合后 environments配置将废除-->

         <environmentsdefault="development">

                   <environmentid="development">

                   <!--使用jdbc事务管理,事务控制由mybatis-->

                            <transactionManagertype="JDBC" />

                   <!--数据库连接池,由mybatis管理-->

                            <dataSourcetype="POOLED">

                                     <propertyname="driver" value="${jdbc.driver}" />

                                     <propertyname="url" value="${jdbc.url}" />

                                     <propertyname="username" value="${jdbc.username}" />

                                     <propertyname="password" value="${jdbc.password}" />

                            </dataSource>

                   </environment>

         </environments>

 

         <!--加载 映射文件 -->

         <mappers>

        <mapper resource="mapper/User.xml"></mapper>

         </mappers>

</configuration>

         2创建一个sqlsessionfactory,用于解析配置文件,例如我们在测试类中,可以对配置文件进行解析 

String resource = "SqlMapConfig.xml";

       //如何对配置文件resouce读取解析

       InputStream inputStream = Resources.getResourceAsStream(resource);

       //创建会话工厂,传入mybati的配置信息

       sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

       3我们要通过上面得到的session.factory获取sqlsession

然后创建一个sqlsession(会话,是一个写好的接口,是一个执行器)

  SqlSession sqlSession =sqlSessionFactory.openSession();

  4执行器调用数据库的操作是增删改查 (可以将重复的操作放到缓存中)

 sqlSession.update,insert,delete,select等操作

        5mapper statement(底层对象的封装)对底层数据库进行操作,用到一些输入参数,输出参数,在映射文件中,namespace叫命名空间,是对sql进行分类化管理,管理sql

<mapper namespace="com.neusoft.dao.UserMapper">

      <select id="findUserById"  parameterType="int"resultType="com.neusoft.bean.User">

           SELECT  *  fromuser  where id=#{value};

</select>

</mapper>

 

 

3继续整合,还是不够好,非常复杂?

基于接口的实现

写一个UserMapper的接口,与UserMapper.Xml文件映射,映射的方式即为namespace等改为接口的地址

<mappernamespace="com.neusoft.dao.UserMapper">

<selectid="findUserById"中id必须与接口中方法名一样,

在测试类中,  UserMapperuserMapper=sqlSession.getMapper(UserMapper.class);

用sqlsession.getMapper();加载接口,基于反射机制。还没有很懂。

4优化

为为实体类定义别名,简化sql映射xml文件中的引用

在mapper.xml中按如下的写:

  <select id="findUserById"  parameterType="int"resultType="user">

在核心配置文件中:

<typeAliases>

         <typeAliastype="com.neusoft.bean.User"alias="user"></typeAlias>

</typeAliases>

注意:namespace 不能那么写

<typeAliases>

        <package name=" com.neusoft.bean"/>

    </typeAliases>

com.neusoft.bean.User这个实体类的别名就会被设置成User

5解决字段名和实体类属性名不相同的冲突,数据表里第一个字段为order_id,

实体类id

<!--

        根据id查询得到一个order对象,使用这个查询是查询不到我们想要的结果的,

        这主要是因为实体类的属性名和数据库的字段名对应不上的原因,因此无法查询出对应的记录

     -->

    <select id="getOrderById"parameterType="int"

       resultType="me.gacl.domain.Order">

           select * from orders whereorder_id=#{id}

     </select>

<!--

根据id查询得到一个order对象,使用这个查询是可以正常查询到我们想要的结果的,

这是因为我们将查询的字段名都起一个和实体类属性名相同的别名,这样实体类的属性名和查询结果中的字段名就可以一一对应上

-->

<selectid="selectOrder" parameterType="int"

resultType="me.gacl.domain.Order">

select order_idid, order_no orderNo,order_price price from orders where order_id=#{id}

</select>

<!--

根据id查询得到一个order对象,使用这个查询是可以正常查询到我们想要的结果的,

这是因为我们通过<resultMap>映射实体类属性名和表的字段名一一对应关系 -->

<selectid="selectOrderResultMap" parameterType="int"resultMap="orderResultMap">

select * fromorders where order_id=#{id}

</select>

<!--通过<resultMap>映射实体类属性名和表的字段名对应关系 -->

<resultMaptype="me.gacl.domain.Order" id="orderResultMap">

<!-- 用id属性来映射主键字段-->

<idpropertyid" column="order_id"/>

<!-- 用result属性来映射非主键字段-->

<resultproperty="orderNo" column="order_no"/>

<resultproperty="price" column="order_price"/>

</resultMap>

    

 

 

 

 

 

  

 

 

内容概要:本文详细介绍了扫描单分子定位显微镜(scanSMLM)技术及其在三维超分辨体积成像中的应用。scanSMLM通过电调透镜(ETL)实现快速轴向扫描,结合4f检测系统将不同焦平面的荧光信号聚焦到固定成像面,从而实现快速、大视场的三维超分辨成像。文章不仅涵盖了系统硬件的设计与实现,还提供了详细的软件代码实现,包括ETL控制、3D样本模拟、体积扫描、单分子定位、3D重建和分子聚类分析等功能。此外,文章还比较了循环扫描与常规扫描模式,展示了前者在光漂白效应上的优势,并通过荧光珠校准、肌动蛋白丝、线粒体网络和流感A病毒血凝素(HA)蛋白聚类的三维成像实验,验证了系统的性能和应用潜力。最后,文章深入探讨了HA蛋白聚类与病毒感染的关系,模拟了24小时内HA聚类的动态变化,提供了从分子到细胞尺度的多尺度分析能力。 适合人群:具备生物学、物理学或工程学背景,对超分辨显微成像技术感兴趣的科研人员,尤其是从事细胞生物学、病毒学或光学成像研究的科学家和技术人员。 使用场景及目标:①理解和掌握scanSMLM技术的工作原理及其在三维超分辨成像中的应用;②学习如何通过Python代码实现完整的scanSMLM系统,包括硬件控制、图像采集、3D重建和数据分析;③应用于单分子水平研究细胞内结构和动态过程,如病毒入侵机制、蛋白质聚类等。 其他说明:本文提供的代码不仅实现了scanSMLM系统的完整工作流程,还涵盖了多种超分辨成像技术的模拟和比较,如STED、GSDIM等。此外,文章还强调了系统在硬件改动小、成像速度快等方面的优势,为研究人员提供了从理论到实践的全面指导。
内容概要:本文详细介绍了基于Seggiani提出的渣层计算模型,针对Prenflo气流床气化炉中炉渣的积累和流动进行了模拟。模型不仅集成了三维代码以提供气化炉内部的温度和浓度分布,还探讨了操作条件变化对炉渣行为的影响。文章通过Python代码实现了模型的核心功能,包括炉渣粘度模型、流动速率计算、厚度更新、与三维模型的集成以及可视化展示。此外,还扩展了模型以考虑炉渣组成对特性的影响,并引入了Bingham流体模型,更精确地描述了含未溶解颗粒的熔渣流动。最后,通过实例展示了氧气-蒸汽流量增加2%时的动态响应,分析了温度、流动特性和渣层分布的变化。 适合人群:从事煤气化技术研究的专业人士、化工过程模拟工程师、以及对工业气化炉操作优化感兴趣的科研人员。 使用场景及目标:①评估不同操作条件下气化炉内炉渣的行为变化;②预测并优化气化炉的操作参数(如温度、氧煤比等),以防止炉渣堵塞;③为工业气化炉的设计和操作提供理论支持和技术指导。 其他说明:该模型的实现基于理论公式和经验数据,为确保模型准确性,实际应用中需要根据具体气化炉的数据进行参数校准。模型还考虑了多个物理场的耦合,包括质量、动量和能量守恒方程,能够模拟不同操作条件下的渣层演变。此外,提供了稳态求解器和动态模拟工具,可用于扰动测试和工业应用案例分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值