文件结构: 1. configuration 配置 ~properties 属性 ~settings 设置 ~typeAliases 类型命名 ~typeHandlers 类型处理器 ~objectFactory 对象工厂 ~plugins 插件 ~environments 环境 environment 环境变量 transactionManager 事务管理器 dataSource 数据源 ~映射器 2. Mapper 配置 cache 配置给定命名控件的缓存 cache-ref 从其他命名空间引用缓存配置 resultMap 如何从数据库结果集加载你需要的对象 sql 可以重复使用的sql块,也可以被其他引用 insert update delete select 下面对这几个配置文件解释下: 1.Configuration.xml 是 mybatis 用来建立 sessionFactory 用的,里面主要包含了数据库连接相关东西,还有 java 类所对应的别名,比如 <typeAlias alias="User" type="com.yihaomen.mybatis.model.User"/> 这个别名非常重要,你在 具体的类的映射中,比如User.xml 中 resultType 就是对应这里的。要保持一致,当然这里的 resultType 还有另外单独的定义方式,后面再说。 2. Configuration.xml 里面 的<mapper resource="com/yihaomen/mybatis/model/User.xml"/>是包含要映射的类的xml配置文件。 3. 在User.xml 文件里面 主要是定义各种SQL 语句,以及这些语句的参数,以及要返回的类型等. 接口式编程 (1) * 原生的:dao ==>DaoImpl * myBatis: Mapper ==>xxxMapper.xml (2) sqlSession代表和数据库的依次会话,用完必须关闭 (3) SqlSession和connection一样是非线程安全的,不能声明为成员变量 (4) mapper接口没有实现类,但是myBatis会自动生成一个代理对象 (5) 两个重要的配置文件 myBatis全局配置文件:包含数据源信息,事务管理器信息,系统运行信息 sql映射文件:保存了每一个sql的映射信息 /** * 1.genju xml 配置文件(全局配置文件)创建一个SqlSessionFactory对象 * 有数据源一些运行环境信息 * 2. sql映射文件,配置每一个sql,以及sql的封装规则 * 3. 将sql映射文件注册在全局配置文件中 * 4.写代码 * 1),根据全局文件得到sqlSessionFactory * 2),使用session增删改查 * 3),使用sql的唯一标示,告诉mybatis执行哪个sql,sql都是保存在映射文件中的 */ 增删改查 1.mybatis允许增删改查直接返回Integer,Boolean,Long,void 直接得到增删改是否成功! 2.mybatis提交方式 SqlSession sqlSession = sqlSessionFactory.openSession();===>手动提交 SqlSession sqlSession = sqlSessionFactory.openSession(true);===>自动提交 参数处理: 单个参数-->myBatis不作特殊处理 #{参数名} 多个参数-->myBatis作特殊处理 多个参数会被封装成一个map (1.#{}就是从map中获得指定的key key:param1,param2...paramN (2.推荐命名参数:明确指定封装参数的map的key (3.如果多个参数正好是pojo我们可以直接传入pojo (4.如果多个参数不是业务逻辑则可以直接传入map (5.如果多个参数不是业务逻辑但是经常使用,推荐编写一个pojo 思考: 1.public Employee getEmployeeByIdAndLastName(Integer id, String lastName); 取值:id==>#{param1},lastName==>#{param2} 2.public Employee getEmployeeByIdAndLastName(@Param("id") Integer id, @Param("lastName") String lastName); 取值:id==>#{param1/id},lastName==>#{param2/lastName} 3.public Employee getEmployeeByIdAndLastName(Integer id, Employee emp); 取值:id==>#{param1},lastName==>#{param2.lastName} 4.public Employee getEmployeeByIdAndLastName(Integer id, @Param("emp")Employee emp); 取值:id==>#{param1},lastName==>#{emp.lastName} 特别注意:如果是Collection(List,Set)类型或者数组,也会作特殊处理把list或者数组封装在map中 key:Collection(collection),List(list),数组(array) 5.public Employee getEmployeeByIdAndLastName(List<Integer> ids); 取值:#{list[0]}
MyBatis初学者经验
最新推荐文章于 2024-09-27 00:45:01 发布