发表于: 2017-12-24 23:46:52

2 481


编辑日报内容...

今天完成的事情:

整合spring+mybatis分步配置(使用注解配置)

创建工程,添加依赖包

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

 

3 spring管理SqlSessionFactorymapper模式)

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

3.3 再接口的方法上注解,编写SQL语句

4spring创建和管理mapper   bean

4.1给接口类添加spring的注解,使spring能自动创建和管理mapper bean

 

 

上面绿色的是使用注解和xml配置的不同地方:

1、注解形式,直接在接口方法写sql,不用mapper文件

                                               

2、注解形式,没有mapper文件,所以不用指定mapper文件

3、注解形式,配置要被扫描的mapper/interface/DAO

4、注解形式,要在3中这些mapper/interface/DAO上进行注解,使使spring能自动创建和管理mapper bean

 

注解和xml文件怎么选

复杂、重要的用xml文件

不重要,简单的,用注解,比较快速

测试的问题

以前是用junit测试,要在@After创建容器,获取Bean,今天看了一个更好的方法:

spring test测试

http://blog.csdn.net/shan9liang/article/details/40452469

注意:

依赖包:

Junit 4 (不同spring版本对junit版本有要求,>4.12

Spring Test Spring框架中的test包)

Spring 相关其他依赖包(不再赘述了,就是context等包

 

深入学习mybatis

增删改:

返回值可以是boolleanintlong

参数处理

单个参数

多个参数

多个参数会被封装成map

keyparam1,param2,……………

value:

测试时,执行sql语句传入的参数是mapvalue

mapper映射文件中,编写的sql语句中,参数名需要用key的值

也就是 #{param1}   #{param2}    #{param3}    #{param4}

这样可以,但是,不太好看,所以有了下面的命名参数

特殊情况:

传入listset、数组,也会封装成map

传入类型

key名称

value

List

list

#{list[0]}  List第一个值

数组

array

 

集合

collection

 

 

命名参数

使用@Param() 注解参数,()中写别名

然后在mapper映射文件中,编写的sql语句中,参数名就可以直接用别名了。

直接传POJO

直接传入一个Map

传入时,指定key的名称,编写的sql语句中,就可以直接用key的名称了。

参数值的获取

#{}${}区别

#{}:是以预编译的形式,将参数设置到sql语句中;PreparedStatement;防止sql注入

${}:取出的值直接拼装在sql语句中;会有安全问题;

怎么用

大多数情况用#{}

原生sql不支持占位符?时,无法预编译,使用${}

#{}更丰富的用法

参数的一些规则

javaTypejdbcTypemode

 

jdbcTypeForNull全局配置

select语句

parameterType 属性

resulType属性

返回List

返回Map

返回一个map:单条记录,key值是字段名,value是这条记录对应的值

返回一个mapkey是数据表一条记录的idvalue是这条数据记录映射成的对象

使用@MapKey() 注解接口的方法  ()中写想作为key值的字段名,这里写@MapKey("id")

 

resultMap自定义结果映射规则

把查询出的数据,转化为java bean对象,这个转化规则可以通过resultMap自定义

先写一个resultMap规则

column指定返回数据的哪一列,property指定java bean属性

id标签用于定义主键,普通列用result标签

 

<resultMap type="转化后的java bean全类名" id="规则的id,标识唯一性">
     <id column="id" propery="id">
     <result column="creat_at"   propery="creatAt">
  </resultMap>

sql语句中调用上面的规则

 

<select id="和接口名保持一致" resultMap="上面的转化规则的id">
     select
语句
  </select>
 
 

 

resultMap 关联查询

方法一:

java bean 中要保存对应关系,resultMap规则设置:property用级联属性

方法二:

java bean 中要保存对应关系,resultMap规则使用 association标签

服务器安装maven

查看java路径

echo $JAVA_HOME

安装maven

wget https://mirrors.cnnic.cn/apache/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.tar.gz

sudo mkdir /usr/local/maven

tar -xvzf apache-maven-3.5.2-bin.tar.gz

sudo mv apache-maven-3.5.2 /usr/local/maven

 

sudo vi /etc/profile

文件末尾添加:

MAVEN_HOME=/usr/local/maven/apache-maven-3.5.2

export MAVEN_HOME

export PATH=${PATH}:${MAVEN_HOME}/bin

再执行:

source /etc/profile

试验maven 命令:mvn -v

明天计划的事情:

学习log4j打日志

maven命令行执行常用命令

Maven命令跑单元测试

学习下连接池

遇到的问题:

报错较多,但是根据信息都解决了,没来及记太多。

说个记得的:如果使用注解写sql语句,mapper文件中的sql语句要删除,要不会造成多个sql语句有相同的id

收获:

使用注解整合springmybatis

linux一些命令

mybatis一些进阶的用法,这部分虽然看了,但是没有实现代码,想了想,还是等以后有需求再深入学

spring test做测试



返回列表 返回列表
评论

    分享到