发表于: 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

4SqlSessionFactory中获取 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、命名空间指定上面创建的接口文件

3SQL语句的id和接口的方法要对应

)

用注解                                                                                                                                                                                                                           

2.2编写注解映射SQL语句

(不用新建文件,直接注解)

类接口上进行注解

 

2.3 mapper配置文件注册到mybatis全局配置

2.3 接口全类名注册到mybatis全局配置

3、构建 SqlSessionFactory

3 从全局配置文件构建SqlSessionFactory

4、获取 SqlSession

4SqlSessionFactory中获取 SqlSession

5、获取接口的代理对象

5用上面SqlSessiongetMapper方法获取接口的代理对象

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生成。(单例方式)

3mybatis模式1:原生类 + SqlSession

3mybatis模式2interface/mapper(代理对象) + SqlSession.getMapper

4、让spring创建和管理sqlsession bean

4、让spring创建和管理mapper bean

3步有两种选项,是因为mybatis有两种模式,优先使用Mapper模式。

因为第3步的两种模式,导致第4sqlsession 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.3spring配置文件中,指定mapper配置文件

2.3 mybatis全局配置文件中,指定mapper配置文件

 

3 spring管理SqlSessionFactorymapper模式)

3.1 pojo类;建接口类(DAO/Mapper

3.2 编辑mapper映射文件,编写SQL语句

4spring创建和管理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确实比较好用

不能浪费时间。





返回列表 返回列表
评论

    分享到