发表于: 2017-12-23 23:59:13
2 453
编辑日报内容...
今天完成的事情:
系统学习mybatis
入门(hello world):
mybatis模式1:使用POJO + SqlSession的方法
1、准备工作 | 1.1 添加mybatis-x.x.x.jar包 | |
1.2 新建一个和数据表对应的类(不是接口) | ||
2、映射SQL语句 | 2.1 新建mybatis全局配置文件 | |
2.1 在全局配置文件中配置数据源(运行环境) | ||
2.2 编写xml映射SQL语句 (1、需要新建一个映射文件 2、命名空间要包含上面创建的类 3、指定SQL语句的id) | 2.2编写注解映射SQL语句 (不用新建文件,直接注解) | |
2.3 把xml文件注册到全局配置 | 2.3 把包注册到全局配置 | |
3、构建 SqlSessionFactory | 3 从全局配置文件构建SqlSessionFactory | |
4、获取 SqlSession | 4从SqlSessionFactory中获取 SqlSession, | |
5、执行SQL语句 | 5使用SqlSession执行SQL语句 (一个SqlSession就是一个会话,用完要关闭) 使用SQL语句的id标志来确定执行哪个SQL语句 SQL应该是已经映射过的语句。 |
这种方法不再流行
mybatis模式2:
上面是以前的方式,现在可以用更好的方法(用接口 + SqlSession.getMpper生成代理对象):
1、准备工作 | 1.1 添加mybatis-x.x.x.jar包 | |
1.2 新建一个和数据表对应的类 | ||
1.3 设计对应的 类接口 | ||
2、映射SQL语句 | 2.1 新建mybatis全局配置文件 | |
2.1 在全局配置文件中配置数据源(运行环境) | ||
用xml 2.2 编写xml映射SQL语句 ( 1、需要新建一个映射文件 2、命名空间指定上面创建的接口文件 3、SQL语句的id和接口的方法要对应 ) | 用注解 2.2编写注解映射SQL语句 (不用新建文件,直接注解) 在类接口上进行注解
| |
2.3 把mapper配置文件注册到mybatis全局配置 | 2.3 把接口全类名注册到mybatis全局配置 | |
3、构建 SqlSessionFactory | 3 从全局配置文件构建SqlSessionFactory | |
4、获取 SqlSession | 4从SqlSessionFactory中获取 SqlSession, | |
5、获取接口的代理对象 | 5用上面SqlSession的getMapper方法获取接口的代理对象 (mybatis会创建一个代理对象) | |
6、执行SQL语句 | 6使用接口的代理对象的方法执行SQL语句 (接口的方法已经和SQL语句的id绑定了) |
使用mybatis完成CRUD操作:
两种方式都通过:
使用XML文件配置注意点:
1 注册mapper文件
使用注解配置注意点
1 注册类接口
2 insert 等语句需要提交事务才起作用
SqlSession.commit();
3 在mybatis中调试查看生成的sql语句
mybatis全局XML配置文件
properties 属性
settings 设置
typeAliases 类型别名
typeHandlers 类型处理器
objectFactory 对象工厂
plugins 插件
environments 环境
environment 环境变量
transactionManager 事务管理器
dataSource 数据源
databaseIdProvider 数据库厂商标识
mappers 映射器
properties 标签:用于引入外部配置文件
settings 设置
mapUnderscoreToCamelCase,驼峰命名,默认为false,
logImpl 指定 MyBatis 所用日志的具体实现
typeAliases 类型别名
为java类,起一个别名。
为某个包,起别名
默认别名,为类名小写
如果使用注解,要用:@Alias()
typeHandlers 类型处理器
objectFactory 对象工厂
plugins 插件
environments 环境
environment 环境变量
transactionManager 事务管理器
dataSource 数据源
Spring + Mybatis整合
基本思路:
1、 让spring来管理数据源信息,原来的mybatis全局文件中就不需要加载数据源了 | |
2、 让spring管理SqlSessionFactory,只要一个SqlSessionFactory来生成SqlSession即可。就是说,需要sqlsession对象的时候,就让sqlsessionfactory生成。(单例方式) | |
3、mybatis模式1:原生类 + SqlSession | 3、mybatis模式2:interface/mapper(代理对象) + SqlSession.getMapper |
4、让spring创建和管理sqlsession bean。 | 4、让spring创建和管理mapper bean。 |
第3步有两种选项,是因为mybatis有两种模式,优先使用Mapper模式。
因为第3步的两种模式,导致第4步sqlsession bean配置不一样。
下面分步来配置(使用XML文件配置)
创建工程,添加依赖包
1、让spring来管理数据源信息,原来的mybatis全局文件中就不需要加载数据源了 |
1.1 新建数据库properties配置、mybatis全局配置、spring配置、mapper配置,四个文件 |
1.2 在spring配置文件中,配置datasource |
2、 让spring管理SqlSessionFactory | |
2.1 在spring配置文件(SqlSessionFactory bean标签)中,指定datasource | |
2.2 在spring配置文件中,指定mybatis全局配置文件 | |
2.3在spring配置文件中,指定mapper配置文件 | 2.3 在mybatis全局配置文件中,指定mapper配置文件 |
3、 让spring管理SqlSessionFactory(mapper模式) |
3.1 建pojo类;建接口类(DAO/Mapper) |
3.2 编辑mapper映射文件,编写SQL语句 |
4让spring创建和管理mapper bean |
4.1 配置mapper bean |
使用mapper方式,在spring配置文件中,指定mapper配置文件。测试通过,
在linux上安装jdk1.8_144 64位
网上很多教程,比较简单,就不写过程了
使用navicat远程连接mysql
mysql默认不允许root用户远程登陆,为了安全,要新建用户
服务器端配置:
1、注释掉bind-address | sudo vi /etc/mysql/my.cnf |
2、新建用户 | CREATE USER 'bpzj'@'%' IDENTIFIED BY 'zhwy'; |
3、添加用户权限,使其可以远程连接 |
|
用到的命令:
mysql> CREATE USER 'bpzj'@'%' IDENTIFIED BY 'zhwy';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'bpzj'@'%' IDENTIFIED BY 'zhwy' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
撤销授权
REVOKE ALL PRIVILEGES ON *.* FROM 'bpzj'@'%';
FLUSH PRIVILEGES;
navicat注意:
使用SSH
明天计划的事情:
使用注解配置Spring + Mybatis
尽力完成任务1。
继续深入学习mybatis
遇到的问题:
mybatis出错,但是看不到sql语句,办法见上面
spring+mybatis整合各种报错,好在找到一个比较清晰的配置教程,解决了
mybatis查询出来的结果,映射到POJO后,打印出来,个别字段为NULL,解决办法:
方法1: 在查询语句为字段起别名
方法2:如果mysql和POJO完全规范,使用驼峰命名,自动匹配
收获:
mybatis确实比较好用
不能浪费时间。
评论