发表于: 2020-05-19 23:43:56

1 1568


今天完成的事情:今天学了怎么用阿里云的服务器和数据库,因为昨天买的不会用,以及处理自己的BUG,做好准备,提交自己的任务一。
明天计划的事情:完成任务一的剩下内容,花最后两天的时间
遇到的问题:遇到的问题我要好好梳理下,特别感觉邵博师兄
收获:

1.前面自己创建的数据库,创建时间和修改时间为NULL

如果要在数据库产生具体时间就用如下方法,如果在业务层处理时间的话,就用时间戳的话,把时间的类型改为bigint

--添加CreateTime 设置默认时间 CURRENT_TIMESTAMP 

ALTER TABLE `table_name`
ADD COLUMN  `CreateTime` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' ;

 

--修改CreateTime 设置默认时间 CURRENT_TIMESTAMP 
ALTER TABLE `table_name`
MODIFY COLUMN  `CreateTime` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' ;

 

--添加UpdateTime 设置 默认时间 CURRENT_TIMESTAMP   设置更新时间为 ON UPDATE CURRENT_TIMESTAMP 
ALTER TABLE `table_name`
ADD COLUMN `UpdateTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间' ;

 

--修改 UpdateTime 设置 默认时间 CURRENT_TIMESTAMP   设置更新时间为 ON UPDATE CURRENT_TIMESTAMP 

ALTER TABLE `table_name`
MODIFY COLUMN `UpdateTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间' ;

2.侧重理解了下Mapper里namespace属性

   在mybatis的映射文件配置中的namespace是用于绑定Dao层的接口的,及面向接口编程,当绑定接口后,就不用写接口的实现类了,因为xxxmapper.xml文件就相当于实现类,接口中的方法和mapper中的id对应。

通常来说,命名空间是唯一识别的一套名字,这样当对象来自不同的地方但是名字相同的时候就不会含糊不清了。使用扩展标记语言的时候,XML的命名空间是所有元素类别和属性的集合。元素类别和属性的名字是可以通过唯一XML命名空间来唯一。

amespace即空间命名名称,用于区分实现数据持久化的方式。namespace一般绑定对应的文件的全路径,

有三种全路径:namespace绑定实体类的全路径,绑定dao接口的全路径,绑定mapper的sql.xml文件。

第一种:namespace绑定实体类的全路径:

 当namespace绑定的是实体类的全路径时,其实现数据持久化的方式为无代理模式实现数据持久化。

需要手动实现dao层的接口。

<mapper namespace="com.system.pojo.LiveInfo"></namespace>

第二种:namespace绑定dao层接口的全路径:

  当namespace绑定的是dao接口的全路径时,其实现数据持久化的方式为有代理模式实现数据持久化。

即会自动产生代理,自动实现数据的持久化,不需要实现dao层的接口。

<mapper namespace="com.system.dao.LiveInfoDao"></namespace>

第三种:namespace绑定的是mapper接口对应的sql.xml文件是,其也是有代理模式自动实现数据持久化。

但mapper接口对应的sql.xml文件名必须保持一致才能自动实现数据持久化。

<mapper namespace="com.system.sql.LiveInfoMapper"></namespace>


3.处理自己写任务一的问题

3.1 bean创建失败

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'studentService' is defined

MyBatis-Spring 提供了一个动态代理的实现:MapperFactoryBean。这个类 可以让你直接注入数据映射器接口到你的 service 层 bean 中。当使用映射器时,你仅仅如调 用你的 DAO 一样调用它们就可以了,但是你不需要编写任何 DAO 实现的代码,因为 MyBatis-Spring 将会为你创建代理。

MapperScannerConfigurer , 它 将 会 查 找 类 路 径 下 的 映 射 器 并 自 动 将 它 们 创 建 成 MapperFactoryBean,basePackage 属性是让你为映射器接口文件设置基本的包路径。 你可以使用分号或逗号 作为分隔符设置多于一个的包路径。每个映射器将会在指定的包路径中递归地被搜索到。


3.2 改了上面后又出现下面,因为找不到xxxMapper.xml文件,要在sqlSessionFactory中配置地址

3.3 然后又是下面的错误

Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: Access denied for user 'guan li'@'125.70.171.207' (using password: YES)

上面的是我的数据源配置,但是官方文档是这样的,改了就正确了

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://****:3306/mytable
jdbc.username=root
jdbc.password=root

3.4 更改pom.xml中增加打包xml文件的内容

<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>

4.说下今天配置云数据库的过程吧

4.1 先要配置白名单,就是需要放行要访问数据库的网段和端口

4.2 点击账号管理,进行新建账号,我直接开通了最高权限账号

4.3连接navicat,在项目中,我们只需要在连接数据库时,将原本的lochost换成RDS实例中的外网地址,然后密码写成对应的密码即可完成连接。


返回列表 返回列表
评论

    分享到