发表于: 2017-12-28 20:39:04
1 622
今天做的事情:
昨天有点事,今天身体状态也不是很好,吃了点药,算是把mybatis最基本的crud大概搞懂了。一些最基本的操作(下载、配置什么的)都是在how2java上面学的,不过它上面教的不是很多,想要自己精进的话还是需要自己多敲代码,添加功能。因为how2java上面教的是普通mybatis工程,我自己就尝试创建了一下Maven风格的,因为没来得及学junit和log4j,所以很多功能都不全。
结构如下所示:
这里特别要注意的是,maven项目自带的java目录要右键Mark为Sources Root,新建用来存放xml文件的Resources文件夹要Mark为Resources Root,不然运行时会抛出异常。(Maven项目的jar包在pom.xml里面加,这里我加上了mysql的驱动包和mybatis的核心包,和暂时没有用到的几个日志依赖包)
1、首先 在mysql中建立how2java数据库,再建立名为“category_”的表。表的结构很简单,一个自增long的主键字段id,一个varchar(15)的name:
2、在java目录下创建com.xiuzhenyuan.pojo.Category类,其实例变量和表一一对应,然后补上set和get方法。另外,为了方便观测后续方法,改写了toString方法:
3、配置全局配置mybatis-config.xml文件:
名词解释:
environments default: 默认环境变量 没啥好说的 和spring整合后就没了
transactionManager :使用JDBC事务管理。MyBatis可以将向preparedStatement中的输入参数自动进行输入映射,将查询结果集灵活映射成java对象(输出映射)。
driver: 需要选择驱动,选择我们加进来的那个jar包
url: 可以理解为地址一样的东西吧,其书写格式在mysql的用户手册中可以查到
username ; 用户名 默认root 超级用户
password :密码 我的是123456
mapper resource : 从Mark为Resources Root的文件夹开始写,主要分隔用的是“/”,不是win系统的“\”
<typeAliases> :自动扫描标签,会自动扫描所选包,下面我就可以不用写全称,直接写Category了。
4.配置Category.xml:
名词解释:
namespace : 命名空间,好比一个类,下面的全是它的内容
id : 好比是身份证一样的东西 标识这个select标签,后面namespacea+"."+id这个String对象会作为一个参数被注入方法中。
parameterType : sql语句中用到占位符的对象的类型 和mysql表中相对应 不过 要注意 parameterType是字面量,而且是java里面类名,比如这里是long而不是对应的bigint
resultType: 需要映射产生的java对象类名,因为启动了自动扫描,我这里不必要写全名
#{ } 占位符,中间表示要接收的参数 机制有点类似于C的带参宏函数,如果为简单类型,大括号中间的可以随便写,但是不能为空。
5、写测试类“Mybatis”,今天没有学到Junit,就拿main方法跑吧,以查找功能示意:
crud操作中,就查询操作不需要session.commit(),因为读锁的限制很少,不需要提交事务。
简单的步骤概括下:
1. 注入配置文件文件名的字面量
2. 取得输入流
3. 构建会话工厂SqlSessionFactory
4. 取得会话包装类SqlSession
5. 往特定的方法中注入参数,取出被映射的对象
这里特别要注意的一点 selectOne这个方法两个参数,第一个是上文说的namespacea+"."+id这个String对象,
第二个是指定和映射文件中所匹配的parameterType类型的参数(就是占位符那个),注意类型一定要匹配,不能是1,必须是long类型的 1L !
6、输出结果:
id: 1 name: category1
因为我改写了被映射对象Category的toString方法。
可以看到,这个结果是和在mysql中输入sql语句
select * from category_ WHERE id = 1
的效果并无二致的。测试到此算是成功吧。
明天要做的事情:学习编写DAO接口和junit、log4j
今天的收获:熟悉了idea软件,熟悉了mybatis最基本的crud操作
评论