mybatis笔记

来源:互联网 发布:淘宝仓管的工作 编辑:程序博客网 时间:2024/05/20 09:27

mybatis是不完全的orm,框架,需要码农自己写sql,适合需要调优和需求变化大的项目,因为你可以改变sql语句。

mybatis两种使用方法
第一种:
在xml中编写sq语句,
并且添加到mybatis总xml配置文件中,暂且叫sqlconfig.xml。
加载sqlconfig.xml初始化 SqlSessionFactory
创建sqlsession…….

第二种

先编写接口
再编写包含sql的xml
把xml添加的sqlconfig.xml
加载sqlconfig.xml初始化 SqlSessionFactory
执行sqlSession.getMapper(UserDaoMap.class)获得接口的代理对象或者实现类。
然后就可以调用接口中定义的方法了
(注:在dao层,一般要写dao接口和实现类,使用mybatis不用写实现类。听说是用代理实现的。不明觉厉!
并且xml的namespace和接口名相同,
sql语句的id和方法名相同,
返回值和参数相同

resultMap实现列名和po对象的属性名不一致

<resultMap type="User" id="testResultMap">    <id column="id_" property="id"/>    <result column="username_" property="username"/>    </resultMap>    <select id="findUserByIdResultMap" parameterType="String" resultMap="testResultMap">        SELECT id id_,username username_ FROM user1 WHERE id=#{value}    </select>

dto data transfer object
数据传输对象,这一类对象是包装后的pojo类。使用包装后pojo对象完成复杂查询。

sql语句返回多行,每一行都是一个bean对象,resultType的值是集合元素的类型而非集合类。

<select id="findUserByName" parameterType="String" resultType="com.entity.User">        SELECT * FROM user1 WHERE username like '%${value}%'</select>

传入的参数是多少怎么写?
答案:使用foreach标签,无论是是使用数组还是List集合都可以,属于动态sql范畴

resultMap配置一对一,一对多,多对多

mybatis和spring整合,保证sqlSessionFactory单例,sqlSession是原型
sqlSession是线程不安全的,要求在方法内创建使用。如果判断是否线程安全?

0 0
原创粉丝点击