黑马程序员技术交流社区

标题: 【石家庄校区】Mybatis入门(一) [打印本页]

作者: 池北    时间: 2018-10-10 11:08
标题: 【石家庄校区】Mybatis入门(一)
本帖最后由 小石姐姐 于 2018-10-10 15:56 编辑

Mybatis入门(一)
  1.MyBatis是基于java的持久层框架是用以解决dao层和数据库的交互,封装了jdbc
2.pojo=domain=实体类/封装类,mapper=dao
3.orm思想:Object Relational Mappging 对象关系映射,
4.实体类中的属性名和数据库表中返回结果的字段名一样
5.mybatis的sqlMapConfig.xml全局核心配置文件包含:mybatis运行需要的一些参数信息,数据库信息等等
6.全局配置文件中最重要的是一个mappers的配置,里面指定了sql语句的位置,就是mapper.xml的位置
7.还有一类mapper.xml的配置文件,内含Sql语句
8.创建maven工程导入坐标
9.添加<packaging>打包方式
10.创建实体类和dao接口
     创建主配置文件sqlMapConfig.xml
     创建映射配置文件mappers中的IUserDao.xml
11.环境搭建的注意事项:
     .1创建IUserDao.xml和IUserDao.java,名称相同是为了和我们之前的知识保持一致。在MyBatis中他把持久层的操作接口名称和映射文件也叫做Mapper所以IUserDao和IUserMapper是一样的
     .2Mybatis的映射配置文件位置必须和dao接口的包结构相同
     .3映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定名
     .4映射配置文件的操作配置(select),id属性的取值必须是dao接口的方法名
12.SqlSessionFactory工厂生产SqlSession对象
13.不写Mapper(dao)实现类的方式要遵从的:
     .1mapper接口和mapper配置文件必须在相同的目录结构下,而且mapper配置文件的名称必须和mapper接口名称一致(3.4版本之后可以无视)
     .2mapper配置文件中namespace必须是mapper接口全限定名
     .3mapper配置文件中sql标签id属性的值必须是mapper接口中的方法名
[XML] 纯文本查看 复制代码
<mapper namespace="cn.chibei.mapper.IUserDao">
    <select id="findAll" resultType="com.itheima.domain.user">
        select *from user;
    </select>
</mapper>
14.案例流程:
     .1读取配置文件
     .2创建SqlSessionFactory工厂
     .3使用工厂生产SqlSession对象
     .4使用SqlSession创建Dao接口的代理对象
     .5使用代理对象执行方法
     .6释放资源
15.为什么要实现序列化接口:可以实现网络通信,从一个系统传送到另一个系统
16.parmeterType=参数类型,resultType=返回值类型
17.sql中输入映射时的参数范围:基本数据类型、pojo/pojo包装类(实体类的类型)、map集合,list集合
18.sql语句中取值:#{属性名称}预编译处理
19.sql中输出映射时的参数范围:基本数据类型,pojo类型,map集合,
20.${value}固定格式,有注入漏洞,尽量用#{}
21.当执行完保存操作后,mybatis会自动把id返回并赋值给user
22.新增用户id的返回:select last_insert_id();在<selectKey>标签中
23.小流程:写方法,映射id,看是否有参数和返回值,写sql语句,用#{属性名称},写测试代码
24.OGNL:Object对象 Graphic图 Navigation导航 Language语言:通过对象的取值方法来换取数据。在写法上把get给省略了。user.getUsername()和user.username
25.在paramenterType中提供了属性所属的类,#{}中不用在写对象名
26.当查询时关联到多个POJO,同事需要传入参数时,参数为${属性值.属性值.属性值...}27.map接口方法中的形参不止一个的时候使用@param("xxx") String username起别名xxx,调用时使用别名 #{xxx}
28.mysql数据库在wd操作系统中不区分大小写,在liux中严格区分大小写
29.如何在实体类pojo中的属性名和结果集中的字段名不一致的情况下实现结果集的封装:
        .1在查询的sql语句上起别名:执行效率快,后期修改难
        .2不要使用resultTyp的同时,使用并配置查询结果的列名和实体类的属性名的对应关系<resultMap>与上相反
30.url属性,resource属性:可以把数据库的连接池JDBC信息独立出来一个properties文件






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2