mybatise学习笔记

来源:互联网 发布:可用多多返利源码 编辑:程序博客网 时间:2024/06/05 15:34
http://www.tuicool.com/articles/7nyM7v(MyBatis使用教程(入门级)很详细的教程--非常好的实例)
MyBatis学习总结
http://www.cnblogs.com/xdp-gacl/tag/MyBatis%E5%AD%A6%E4%B9%A0%E6%80%BB%E7%BB%93/
http://www.yihaomen.com/article/java/302.htm(mybatis教程)
http://wiki.jikexueyuan.com/project/mybatis-in-action/
http://wiki.jikexueyuan.com/list/java/
http://www.cnblogs.com/dennisit/archive/2013/04/10/3012972.html(Spring + mybatis整合实例应用-->单个表操作是一个好实例)
http://www.cnblogs.com/zengsong-restService/p/3248245.html(eclipse mybatis Generator
http://www.cnblogs.com/xdp-gacl/p/4264440.html(MyBatis学习总结(五)——实现关联表查询)
http://www.cnblogs.com/xdp-gacl/p/4261895.html(MyBatis学习总结(一)——MyBatis快速入门

http://www.cnblogs.com/mingyue1818/p/3714162.html(MyBatis传入多个参数的问题)

(解决了我对多参数传递的困惑)

一、单个参数:

复制代码
public List<XXBean> getXXBeanList(String xxCode);  <select id="getXXXBeanList" parameterType="java.lang.String" resultType="XXBean">  select t.* from tableName t where t.id= #{id}  </select>  其中方法名和ID一致,#{}中的参数名与方法中的参数名一直, 我这里采用的是XXXBean是采用的短名字,select 后的字段列表要和bean中的属性名一致, 如果不一致的可以用 as 来补充。
复制代码

 

二、多参数:

复制代码
public List<XXXBean> getXXXBeanList(String xxId, String xxCode);  <select id="getXXXBeanList" resultType="XXBean">  select t.* from tableName where id = #{0} and name = #{1}  </select>  由于是多参数那么就不能使用parameterType, 改用#{index}是第几个就用第几个的索引,索引从0开始
复制代码

 

三、Map封装多参数:  

复制代码
public List<XXXBean> getXXXBeanList(HashMap map);  <select id="getXXXBeanList" parameterType="hashmap" resultType="XXBean">  select 字段... from XXX where id=#{xxId} code = #{xxCode}  </select>  其中hashmap是mybatis自己配置好的直接使用就行。map中key的名字是那个就在#{}使用那个,map如何封装就不用了我说了吧。 
复制代码

 

 四、List封装in:

复制代码
public List<XXXBean> getXXXBeanList(List<String> list);  <select id="getXXXBeanList" resultType="XXBean">  select 字段... from XXX where id in  <foreach item="item" index="index" collection="list" open="(" separator="," close=")">      #{item}    </foreach></select>  foreach 最后的效果是select 字段... from XXX where id in ('1','2','3','4') 
复制代码

 

五、多参数传递之注解方式示:    

 

复制代码
例子: public AddrInfo getAddrInfo(@Param("corpId")int corpId, @Param("addrId")int addrId); xml配置这样写: <select id="getAddrInfo"  resultMap="com.xxx.xxx.AddrInfo">       SELECT * FROM addr__info 
    where addr_id=#{addrId} and corp_id=#{corpId}
</select> 以前在<select>语句中要带parameterType的,现在可以不要这样写。
复制代码

 

 

六、selectList()只能传递一个参数,但实际所需参数既要包含String类型,又要包含List类型时的处理方法:

将参数放入Map,再取出Map中的List遍历。如下:

复制代码
List<String> list_3 = new ArrayList<String>();
Map<String, Object> map2 = new HashMap<String, Object>();
list.add("1");
list.add("2");
map2.put("list", list); //网址id

map2.put(
"siteTag", "0");//网址类型
复制代码

 

public List<SysWeb> getSysInfo(Map<String, Object> map2) {  return getSqlSession().selectList("sysweb.getSysInfo", map2);}

 

复制代码
<select id="getSysInfo" parameterType="java.util.Map" resultType="SysWeb">  select t.sysSiteId, t.siteName, t1.mzNum as siteTagNum, t1.mzName as siteTag, t.url, t.iconPath   from TD_WEB_SYSSITE t   left join TD_MZ_MZDY t1 on t1.mzNum = t.siteTag and t1.mzType = 10   WHERE t.siteTag = #{siteTag }    and t.sysSiteId not in    <foreach collection="list" item="item" index="index" open="(" close=")" separator=",">       #{item}   </foreach></select>
复制代码

http://blog.csdn.net/p793049488/article/details/40422975
自动生成的配置文件详解
 3、新建配置文件generatorConfig.xml:
[html] view plain copy 在CODE上查看代码片派生到我的代码片
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >  
  3. <generatorConfiguration>  
  4.     <!-- 引入配置文件 -->  
  5.     <properties resource="generator.properties"/>  
  6.       
  7.     <!-- 指定数据连接驱动jar地址 -->  
  8.     <classPathEntry location="${classPath}" />  
  9.       
  10.     <!-- 一个数据库一个context -->  
  11.     <context id="infoGuardian" targetRuntime="MyBatis3">  
  12.         <!-- 注释 -->  
  13.         <commentGenerator >  
  14.             <property name="suppressAllComments" value="true"/><!-- 是否取消注释 -->  
  15.             <property name="suppressDate" value="true" /> <!-- 是否生成注释代时间戳-->  
  16.         </commentGenerator>  
  17.           
  18.         <!-- jdbc连接 -->  
  19.         <jdbcConnection driverClass="${jdbc_driver}"  
  20.             connectionURL="${jdbc_url}" userId="${jdbc_user}"  
  21.             password="${jdbc_password}" />  
  22.           
  23.         <!-- 类型转换 -->  
  24.         <javaTypeResolver>  
  25.             <!-- 是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.) -->  
  26.             <property name="forceBigDecimals" value="false"/>  
  27.         </javaTypeResolver>  
  28.           
  29.         <!-- 生成实体类地址 -->    
  30.         <javaModelGenerator targetPackage="cn.ffcs.yuntv.domain"  
  31.             targetProject="${project}" >  
  32.             <!-- 是否在当前路径下新加一层schema,eg:fase路径cn.ffcs.test.domain", true:cn.ffcs.test.domain".[schemaName] -->  
  33.             <property name="enableSubPackages" value="false"/>  
  34.             <!-- 是否针对string类型的字段在set的时候进行trim调用 -->  
  35.             <property name="trimStrings" value="true"/>  
  36.         </javaModelGenerator>  
  37.           
  38.         <!-- 生成mapxml文件 -->  
  39.         <sqlMapGenerator targetPackage="mybatis"  
  40.             targetProject="${resource}" >  
  41.             <!-- 是否在当前路径下新加一层schema,eg:fase路径cn.ffcs.test.domain", true:cn.ffcs.test.domain".[schemaName] -->  
  42.             <property name="enableSubPackages" value="false" />  
  43.         </sqlMapGenerator>  
  44.           
  45.         <!-- 生成mapxml对应client,也就是接口dao -->      
  46.         <javaClientGenerator targetPackage="cn.ffcs.yuntv.dao"  
  47.             targetProject="${project}" type="XMLMAPPER" >  
  48.             <!-- 是否在当前路径下新加一层schema,eg:fase路径cn.ffcs.test.domain", true:cn.ffcs.test.domain".[schemaName] -->  
  49.             <property name="enableSubPackages" value="false" />  
  50.         </javaClientGenerator>  
  51.           
  52.         <!-- 配置表信息,这里没生成一张表,这里需要改变一次对应表名 -->    
  53.         <table schema="icity_yuntv" tableName="T_USER_ADDR"  
  54.             domainObjectName="UserAddr" enableCountByExample="false"  
  55.             enableDeleteByExample="false" enableSelectByExample="false"  
  56.             enableUpdateByExample="false">  
  57.             <!-- schema即为数据库名 tableName为对应的数据库表 domainObjectName是要生成的实体类 enable*ByExample   
  58.                 是否生成 example类   -->  
  59.               
  60.             <!-- 忽略列,不生成bean 字段   
  61.             <ignoreColumn column="FRED" />-->  
  62.             <!-- 指定列的java数据类型   
  63.             <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" />-->  
  64.         </table>  
  65.   
  66.     </context>  
  67. </generatorConfiguration>  


http://feiyeguohai.iteye.com/blog/1180898/(解决多对多的困惑)
http://www.cnblogs.com/xdpgacl/tag/MyBatis%E5%AD%A6%E4%B9%A0%E6%80%BB%E7%BB%93/
MyBatis学习总结
http://www.jb51.net/article/71528.htm(mybatis的动态sql详解(精))















0 0