select操作:
resultType 返回对象类型。也可以使用resultMap (这个是自定义标签)
parameterType 传入数据类型。
flushCache 默认false ,用于本地缓存和二级缓存清空
timeout 默认unset,设置驱动程序等待数据库返回请求结果的秒数
fetchSize 默认unset,尝试影响驱动程序每次批量返回的结果行数和这个设置值相等
dao文件
@Mapper public interface UserDao { UserDO get(Long userId); List list(Map<String, Object> params); //返回user实体类或者Map的list ,返回内容详见xml文件配置 }
简单
<select id="getbyid" resultType="com.entity.User"> SELECT user_name As Name FROM t_project where id= #{id} </select> # Name、id 是实体类User内的变量,resultType为返回格式,可以是实体类,也可以是其他如Map。 若是Map格式,则返回的内容是查询后的名字(和在mysql中查询后的表头名一样) #这个写法可以返回一条数据,也可以返回一个list(看dao文件要返回格式)
传入resultMap
<select id="getById" resultMap="mymap"> select * from user where id=#{value} </select> <resultMap id="mymap" type="com.entity.showUser"># 返回格式类型 <id column="id" property="id"/> <collection property="userClass" column="id" select="getclass"> <id column="id" property="id"/> </collection> </resultMap> <select id="getclass" resultType="com.entity.class"> #collection 对应的查询语句 select * from t_expense_detail where expense_id=#{id} </select> #userClass 是showUser中变量名,这条collection用于查询可以返回list 或其他格式,返回后赋值给userClass #getclass是查询语句 #可用此方法查询返回list中list格式 [ {id:0,list:[],... }, ... ] #可用此方法进行连表查询
resultMap标签:建立SQL查询结果字段与实体属性的映射关系信息,并将结果转换为java对象,
<id> 为主标签,用于设置主键字段与领域模型属性的映射关系,此处主键为ID,对应id <result >用于设置普通字段与领域模型属性的映射关系,即:mysql查询出的字段与实体类的变量映射关系 其中column 为mysql字段,property为对应的变量名
collection标签,用于连表查询一对多嵌套查询(集合)
property:查询结果返回后的字段或list命名
column:主键
select:查询语句id,新建一个查询语句,用select将其关联
association标签,用于连表一对一,多对一查询(连表),标签属性通collection