• 框架(mybatis概念及环境搭建


    框架明白--

    mybatis基本概念

    搭建mybatis环境
    	1, 导入需要的jar包
    	2, 配置mybatis的总配置文件: mybatis-config.xml
    		配置根标签
    		<!-- 根标签 -->
    		<configuration>
    			<!-- 
    				引入属性文件
    				属性文件通常写数据库连接的信息
    					username(注意一个问题, 属性文件中不要单独写一个username)
    					password
    					url
    					driverClass
    			-->
    			<property resource="属性文件所在src下的位置" />
    
    			<!-- 或者直接定义属性值 -->
    			<properties>
    				<property name="jdbc.username" value="test" />
    				<property name="jdbc.password" value="test" />
    				<property name="jdbc.driverClassName" value="oracle.jdbc.OracleDriver" />
    				<property name="jdbc.url" value="jdbc:oracle:thin:@localhost:1521:orcl" />
    			</properties>
    
    			<!-- 为实体类定义一个别名, 如果不定义别名, 在映射文件中就要写这个实体类的全路径名 -->
    			<typeAliases>
    				<!-- 这个写法取的别名是随意的, 可以自己任意定义 -->
    				<!-- <typeAlias type="类名的全路径名" alias="别名"></typeAlias> -->
    				<!-- 如果使用下面这个写法, 就是按照mybatis自己定义的规则, 这个包下的所有类的类名就是别名 -->
    				<package name="com.model"/>
    				<!-- 使用package标签实际是默认扫描model包下的所有的类, 如果在实体类的定义了注解@Alias(value = "..."), 则优先使用注解 -->
    			</typeAliases>
    
    			<!-- 配置mybatis的运行环境们 -->
    			<environments default="所使用的环境的标签id">
    				<environment id="default">
    					<!-- 
    						配置事务管理器的类型
    							JDBC
    							MANAGED--(托管, 商业服务器上才有的功能, Tomcat没有)
    					-->
    					<transactionManager type="JDBC" />
    					<!-- 
    						POOLED(基于连接池的数据源)
    						UNPOOLED(使用普通的数据库连接)
    						JNDI(使用应用服务器上的JNDI连接配置数据源, 很少使用)
    					-->
    					<dataSource type="POOLED">
    						<property name="username" value="${属性文件中配置的信息}"></property>
    						<property name="password" value="${属性文件中配置的信息}"></property>
    						<property name="url" value="${属性文件中配置的信息}"></property>
    						<property name="driver" value="${属性文件中配置的信息}"></property>
    					</dataSource>
    				</envirment>
    			</environments>
    			<mappers>
    				<!-- 挨个写明每个映射文件所在的位置 -->
    				<mapper resource="src下mapper映射文件的全路径名">
    				<!-- 写明每个映射文件所对应的接口的限定名, package引入的文件一定是接口, 
    				所以如果使用这种方式, 必须是使用接口对应映射文件的方式 -->
    				<package name="接口所在的包" />
    			</mappers>
    		</configuration>
    
    	3, 新建每个实体类的映射文件...Mapper.xml
    		<!-- 定义每个实体类的映射文件 -->
    		<mapper namespace="唯一的id / 接口的全路径名">
    			<select id="被调用的id(唯一) / 需要执行的方法名"></select>
    			<insert></insert>
    			<update></update>
    			<delete></delete>
    		</mapper>
    
    	4, 写测试类运行mybatis
    		MybatisUtil
    			两步:
    				1, 构建SqlSessionFactory
    					InputStream in = Resources.getResourceAsStream("总配置文件所在的src下的路径");
    					SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(in);
    				2, 构建SqlSession(注意SqlSession不能以一个class成员变量的身份被返回)
    					SqlSession ss = ssf.openSession();
    				3, 直接运行
    					a: 直接运行映射文件中的sql语句
    						ss.select...
    						ss.insert...
    						ss.update...
    						ss.delete...
    					b: 使用接口映射配置文件
    						ss.getMapper(接口类名.class);
    						调用接口的方法
    
    一对一, 一对多查询
    	1, 一对一
    		映射文件中写明resultMap, 这时sql语句一定用关联查询多个表的内容
    			<resultMap type="类名" id="...">
    				<id property="实体类中成员变量的名字" column="查询结果中的列名" />
    				<result property="成员变量的名字" column="查询结果中的列名" />
    				...
    				<!-- 对象级联 -->
    				<result property="major.majorid" column="查询结果中的列名" />
    				<result property="major.mname" column="查询结果中的列名" />
    			</resultMap>
    			<resultMap type="类名" id="...">
    				<id property="实体类中成员变量的名字" column="查询结果中的列名" />
    				<result property="成员变量的名字" column="查询结果中的列名" />
    				...
    				<!-- 对象级联 -->
    				<association property="major" resultMap="定义好的另一个resultMap" />
    			</resultMap>
    			<resultMap type="类名" id="...">
    				<association property="属性名" select="其他映射文件中的查询语句" />
    			</resultMap>
    	2, 一对多
    			<resultMap type="类名" id="...">
    				<collection property="students" select="其他映射文件中的查询语句" />
    			</resultMap>
    
    动态sql语句
    	1, <if>条件
    		<if test="key!=null">
    			拼接sql语句
    		</if>
    	2, <choose><when><otherwise>
    		<choose>
    			<when test="key=='value'">
    				拼接sql语句
    			</when>
    			<when test="key=='value'">
    				拼接sql语句
    			</when>
    			<otherwise>
    				拼接sql语句
    			</otherwise>
    		</choose>
    	3, <where>
    		自动添加where关键字
    		如果where子句第一句中有 or 或者 and 则删除第一个
    	4, <trim>
    		功能与<where>类似, 并且提供了前缀, 后缀的添加, 更加灵活
    	5, <foreach>
    		用来遍历传入的集合参数
    			item(定义集合中每个对象的名字), 
    			collection(集合的对象的名字), list(array) 集合(数组)
    			open(定义开始的字符), 
    			close(定义结束的字符), 
    			separator(定义分割的字符)
    	6, <set>
    		主要用于update
    		自动加上set关键字
    		自动剔除最后一个 ","
    	7, <sql>
    		经常用于一些常用或者固定的语句, 在外面定义一个语句, 在各种标签中引入
    		使用include, 相当于直接写在上面
    	8, <selectKey>
    		用于不支持自增长主键的数据库, 尽量避免写这个东西.
    		从表中的id想和主表的id相同,可以用这个
    
    
    	<	<	小于号                                           
    	>	>	大于号
    	&	&	和
    	'	’	单引号
    	"	"	双引号
    
    	<![CDATA[]]>
    
    分页, 文件的存储
    
    逻辑分页mybatis中,内存中分页
    
    物理分页oracle中,看第几页显示第几页内容.这个数量大就要用这个
    
    
    缓存
    

     mybatis环境搭建

     

  • 相关阅读:
    iphone实时通话开源框架pjsip编译-pjsua运行测试
    iOS开发之使用pjsip开发VoIP应用程序
    Windows7下JDK+Tomcat的安装与配置
    ios xmpp开发应用后台模式接收聊天信息[转]
    IOS基础控件总结
    Objective C Foundation基础框架[转]
    Garbage Collection 垃圾收集
    Java 内存溢出分析
    Centos下MySQL使用总结
    不同项目数据交互
  • 原文地址:https://www.cnblogs.com/ziyanxiaozhu/p/8358470.html
Copyright © 2020-2023  润新知