`

mybatis配置简单用法(2)

阅读更多

     这几天一直在看mybatis,觉得分为三个部分在应用中需要掌握:结果集动态加载,事务管理,缓存机制:

后面两个以后暂时只是懂一点,以后看源码再叙说吧。

    结果集动态加载,按照我的理解是首先是resultmap之间相互合并或者引用,形成更大的结果集,然后是逻辑标签的使用,可以节省许多sql逻辑上的判断,最后是映射在javabean上,可以构造注入,建立对象属性,注入对象集合。以下是我这几天学习的一些概要。

   1.select查询返回到javabean结果,其中属性resultType值是为返回集合的基本单元,打个比方,在DAO接口里,返回的是LIst<User>,那么在resultTyp=“User”,并不是写resultType="LIst",在设置植入参数parameterType时,一般接受HashMap,String,int,自定义的JAVBEAN,其实这几个一般情况下就足够可以用了,具体写的时候就类似于ognl表达式,比如 map(HashMap)中username="123"----------->#{username},就可以了,不用写map.username这样是错的。以上的一些注意的话,对表进行简单查询就可以了。:在官方文档里里面是这样写的,参考一下

  <select id=”selectUsers” parameterType=”int” resultType=”hashmap”>

             select id, username, hashedPassword

            from some_table

             where id = #{id}

  </select>

  2.结果集合并是通过resultMap实现,(其实resultType也是这种方式),以来满足进行多表查询,和减少javabean(因为只是相互注入,所以不需要重新写,重复利用):

    association子标签的话,是用来一对一查询,打个比方A.a---------->B.b有两条结果,是只会返回后面那一条的,属性主要为4个,resultMap=""(调用其他的resultMap),property(调用的javabean集合对应的属性名),column(sql返回的结果集对应的名字),javaType(返回的到javabean结果集的类型,不是最基本类型)

  collection子标签,就是解决多对多的问题,与association属性区别多了一个oftype(返回结果集的基本类型),比如你返回的是List<user>,就写ArrayList,对应到javabean

  construtors,初始化构造,一般不用,Discriminator的作用相当于switch,就是对sql语句查出来的某列的一个值继续判断,再来执行resultmap,选择不同的外部结果集合,类似于choose标签,但是个人感觉Discriminator是针对内部sql中column逻辑判断,而choose是对外部变量来驱动执行的,这点我不是很清楚

  3.逻辑标签语句:(因为有些比较简单,只写出我认为重要的),写的时候,可能发现会有多余的词出现,使得sql不合法,所以有了<trim>来处理,其过滤分为前缀prefix,和后缀suffix,用的时候要知道过滤的内容遗留位置,比如and 在合法字符串前面就是前缀。在prefixOverrides中,按照官方文档说明:

(overrides属性使用了管道分隔的文本列表来覆写,而且它的空白也不能忽略的。这样的结果

是移出了指定在overrides 属性里字符,而在开头插入prefix属性中指定的字符),但是在使用时跟其他标签一样,只是在prefixOverrides="and|or|shell"里面对过滤单元加上 | 这个符号,其他空格不要可以执行,;forech注意事项就是导入参数名的问题,如LIst----》list,set的话用于update语句,可以使用trim代替

 

因个人水平有限,且博客主要是记录个人学习的知识以及梳理,欢迎各位大神指出问题(下附简单配置代码)

 

 UserinforMapper.xml(具体操作sql配置文件)

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="mybatis.test.Db_userinforDao">



	<insert id="insert" parameterType="mybatis.test.Db_userinfor">
		insert into db_userinfor
		values(#{username},#{userpass},#{userinterest},#{useraddress},#{userphone},#{usergrades})
	</insert>


	<sql id="changeselect" >select * from db_userinfor
		
		<trim prefix="where" prefixOverrides="and|or|shell"  >
		<choose>
			<when test="name!=null">
				username=#{name}
			</when>
		</choose>
			and  userpass=#{pass}
		</trim>
		
	
	</sql>
	
	<select id="selectall" resultType="mybatis.test.Db_userinfor"
		parameterType="HashMap"  >
		<include refid="changeselect" />
	</select>


	<select id="selectlist" resultType="HashMap">
		select username,userpass from
		db_userinfor limit 1
    </select>



	<select id="selectmap" resultMap="UserMap">
		select username as
		usernames,userpass as userpasss from db_userinfor limit 1
	</select>


	<resultMap type="mybatis.test.Db_userinfor" id="UserMap">
		<id property="username" column="usernames" />
		<result property="userpass" column="userpasss" />

	</resultMap>



	<select id="selecttwo" resultMap="twomap" >
		select
		db_userinfor.username as username,db_userinfor.userpass as
		userpass,db_order.id as id,db_order.Ac_id as orderid,db_order.username
		as usernames from
		db_userinfor,db_order
		where db_userinfor.username=db_order.username 
		
	</select>

	<resultMap type="mybatis.test.UnionQuery" id="twomap">
		<id property="username" column="username" />
		<result property="userpass" column="userpass" />
		<!-- <collection property="order" ofType="mybatis.test.Db_order" resultMap="returnmap"> 
			</collection> -->
		<association property="order" resultMap="returnmap" >
		</association>
	</resultMap>

	<resultMap type="mybatis.test.Db_order" id="returnmap">
		<id property="id" column="id" />
		<result property="Ac_id" column="orderid" />
		<result property="username" column="usernames" />
	</resultMap>

	<!-- 测试用例 -->
	<!-- <cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true"  /> -->

</mapper>




<!--<association property="order" column="username" javaType="mybatis.test.Db_order" 
	resultMap="returnmap"></association> -->

<!--<select id="selectone" resultMap="" parameterType="String"> select username,userpass 
	from db_userinfor where username=#{usernames} limit 1 </select> --><!-- <collection property="order" ofType="mybatis.test.Db_order" column="username" 
	resultMap="returnmap"> </collection> -->

 

 myabtis主配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<typeAliases>
		<typeAlias alias="UserDAO" type="sql.mybatis.dao.Db_userinforDAO" />
	</typeAliases>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/helper?useUnicode=true&amp;characterEncoding=UTF-8&amp;zeroDateTimeBehavior=convertToNull" />
                <property name="username" value="root" />
                <property name="password" value="root" />
            </dataSource>
        </environment>
    </environments>
    

    <mappers>
    	<mapper resource="mybatis/test/UserDaoMapper.xml" />
    	<mapper resource="sql/mybatis/dao/db_userinforDAOMapper.xml" />
    </mappers>
    
</configuration>

 对象javabean

 

package mybatis.test;

public class Db_userinfor {
	private String username;
	private String userpass;
	private String userinterest;
	private String useraddress;
	private String userphone;
	private String usergrades;
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getUserpass() {
		return userpass;
	}
	public void setUserpass(String userpass) {
		this.userpass = userpass;
	}
	public String getUserinterest() {
		return userinterest;
	}
	public void setUserinterest(String userinterest) {
		this.userinterest = userinterest;
	}
	public String getUseraddress() {
		return useraddress;
	}
	public void setUseraddress(String useraddress) {
		this.useraddress = useraddress;
	}
	public String getUserphone() {
		return userphone;
	}
	public void setUserphone(String userphone) {
		this.userphone = userphone;
	}
	public String getUsergrades() {
		return usergrades;
	}
	public void setUsergrades(String usergrades) {
		this.usergrades = usergrades;
	}
}

 

 操作接口maperdao

package mybatis.test;

import java.util.HashMap;
import java.util.List;
public interface Db_userinforDao{
	public void insert(Db_userinfor userinfor);
	public List<Db_userinfor> selectall(HashMap map);
//	public List<Db_userinfor> selectall(HashMap map);
	public List<HashMap> selectlist();
	public Db_userinfor selectmap();
	public List<UnionQuery> selecttwo();
	public void deleteobject(String username);
}   
   /* public int update(Db_userinfor userinfor);
    
    public int delete(String username);
    
    public List<Db_userinfor> selectAll();
    
    public int countAll();
    
    public Db_userinfor[] findByusername(String username); */

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    Mybatis配置示例代码

    在这个名为"Mybatis配置示例代码"的压缩包中,我们可以期待找到一个集成阿里Druid连接池的Mybatis配置示例。 1. **Mybatis基本配置** Mybatis的核心配置文件通常命名为`mybatis-config.xml`,其中包含了数据源、...

    mybatis配置及架包

    在"Mybatis配置及架包"中,我们主要会探讨以下几个关键知识点: 1. **MyBatis架构**:MyBatis的核心组件包括SqlSessionFactoryBuilder、SqlSessionFactory和SqlSession。SqlSessionFactoryBuilder用于构建...

    spring boot + mybatis 简单配置

    在本文中,我们将深入探讨如何使用Spring Boot与MyBatis框架进行简单集成和配置。Spring Boot以其便捷的启动和运行特性,以及对多种技术的自动配置,极大地简化了Java应用的开发过程。而MyBatis作为一款轻量级的持久...

    springmvc mybatis 配置 简单框架

    本篇文章将详细介绍如何配置和使用这两个框架来搭建一个简单的Web应用程序。 首先,SpringMVC是Spring框架的一部分,它是一个用于构建Web应用的模型-视图-控制器(MVC)架构。SpringMVC通过DispatcherServlet作为...

    spring和mybatis整合配置

    -- MyBatis配置文件路径 --&gt; &lt;bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"&gt; &lt;property name="basePackage" value="com.example.mapper"/&gt; &lt;!-- Mapper接口所在的包名 --&gt; ``` 3. **...

    mybatis笔记

    二、MyBatis配置 1. MyBatis主配置文件:配置数据源、事务管理器、环境等基本信息。 2. 映射文件:每个表对应一个XML文件,用于编写SQL语句和结果映射。 三、MyBatis注解使用 1. @Select:用于定义查询方法,包含...

    mybatis基本配置

    MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 在了解MyBatis的基本配置之前,我们需要知道MyBatis的工作原理。MyBatis...

    mybatis_01 入门配置 Dao的两种开发方法

    ### MyBatis 入门配置与 DAO 的两种开发方法 #### 一、JDBC 开发问题及 MyBatis 概览 ##### JDBC 开发常见问题 - **频繁创建与释放数据库连接**: 这可能导致资源浪费并影响系统性能。在企业级项目中,通常采用连接...

    Mybatis简单配置(NetBeans版本)

    在这个简单的练习项目中,你将逐步了解如何配置Mybatis,创建映射文件,编写SQL语句,以及在Java代码中使用Mybatis执行数据库操作。这是一个很好的起点,通过实践,你将对Mybatis的配置和使用有更深入的理解。记得,...

    mybatis配置文件.zip

    MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。本压缩包包含了一个基本的MyBatis配置文件模板,用于帮助开发者快速搭建...

    mybatis源码+配置步骤+包文件

    二、MyBatis配置步骤 配置MyBatis主要包括以下步骤: 1. 引入依赖:在项目中添加MyBatis的jar包,或者通过Maven或Gradle等构建工具引入依赖。 2. 配置mybatis-config.xml:这是MyBatis的全局配置文件,包含数据库...

    MyBatis框架的简单配置

    本篇文章将深入讲解MyBatis框架的简单配置。 首先,MyBatis的配置文件通常为`mybatis-config.xml`,它是MyBatis的核心配置,包含了数据库连接信息、事务管理、日志配置等。在入门阶段,我们需要了解以下关键配置...

    mybatis配置及优缺点.zip

    ### MyBatis配置 MyBatis的配置主要分为两个部分:全局配置文件和映射文件。全局配置文件(mybatis-config.xml)包含了数据库连接信息、事务管理、类型别名等基础设置。映射文件(Mapper XML文件)则定义了SQL语句和...

    mybatis配置文件以及日志文件Log4j

    同时,你还可以在这个压缩包中找到MyBatis的开发文档,帮助你理解其工作原理和使用方法。 日志记录在软件开发中起着至关重要的作用,它可以帮助开发者追踪应用程序的行为,定位问题。Log4j是一个广泛使用的Java日志...

    mybatis配置及案列源码

    在本案例中,"mybatis配置及案列源码"提供了关于如何在项目中安装和配置MyBatis的详细步骤,同时可能包含了相关示例代码以供学习和实践。 首先,了解MyBatis的基本概念是必要的。MyBatis消除了几乎所有的JDBC代码和...

    Spring Boot整合mybatis 配置Druid数据源开启sql监控

    这里会使用Druid的数据源,并指定MyBatis的配置文件路径。 5. **配置Mapper** 创建Mapper接口和对应的XML文件,定义SQL查询。使用`@Mapper`注解标记接口,并在Spring Boot配置文件中启用自动扫描Mapper接口。 6. ...

    MyBatis基本配置和简单的增删改查

    在本教程中,我们将深入探讨MyBatis的基本配置和如何进行简单的增删改查操作。 **1. MyBatis的基本配置** MyBatis的配置文件通常命名为`mybatis-config.xml`,它是整个MyBatis框架的全局配置。以下是一些基本配置...

    第二章_MyBatis详细配置

    MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集,它可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects)映射成数据库中的记录。 ### 范围和生命周期 #### ...

    mybatis demo mybatis 实例

    MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 标题“mybatis demo mybatis 实例”指的是一个MyBatis的学习示例项目,...

    mybatis配置及文档

    MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 在"mybatis Struts spring 三框架完美组合"中,这三个框架协同工作,...

Global site tag (gtag.js) - Google Analytics