发表于: 2017-07-20 15:20:53
2 1306
今日完成的事情:编辑中
还是在学习spring springmvc mybatis 的整合过程,过程整合学习是真的复杂。
昨晚一晚都不知道这个问题具体操作是怎么样的,在准备spring的配置文件过程中,引入命名空间错误,也不知道这么正确的引入的方法,一直纠结于事务配置标签tx:attributes is not allowed here 的问题。搞了好久,也查看了jar包依赖图也没发现那里有冲突。然后百度直接搜索看看为什么这个tx:attributes 标签没有能引用。后来在网上找了很多版本的命名空间,随便找了个贴上去,然后重启一下,就可以引用了。还是找不出这个原因。在哪里
我以为我少了jar包。就去maven仓库专门下一个attributes的jar包。也不知道有没有效果。问题起来想解决都得费好长时间。
<dependency>
<groupId>commons-attributes</groupId>
<artifactId>commons-attributes-api</artifactId>
<version>2.2</version>
</dependency>
<tx:advice id="txAdvice" >
<tx:attributes>
<!--所有方法都是事务方法-->
<tx:method name="*"/>
<!--以get开始的所有方法,用read only调优 -->
<tx:method name="get*" read-only="true"/>
</tx:attributes>
</tx:advice>
能引用后又发现bean头报异常说我的命名空间被绑定,重新引入后就好了
但是还是不熟悉命名空间怎么搞,晚上回去学习一波命名空间的知识
下载mybatis generator所需的依赖,在pom.xml中加入
接下来就是学习mybatis逆向工程生成文件,首先呢要建立一个MyBatis Generator的xml
进入mybatis generator官网,找到在左边的目录找到MyBatis Generator的xml文件引用。创建xml ,复制粘贴到你所创建xml文件中。名字随意。
这个样板中有这么一个标签,根据直面意思是进入目录路径的位置 找到这个文件引用,由于是maven添加依赖,所以直接添加jar包。这句就可以删除了。应该是这么个意思吧,还是要让师兄解答一下。
<classPathEntry location="/Program Files/IBM/SQLLIB/java/db2java.zip" />
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<context id="DB2Tables" targetRuntime="MyBatis3">
<!--配置数据库连接-->
<jdbcConnection
driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://********:3306/db1"
userId="root"
password="********">
</jdbcConnection>
<javaTypeResolver >
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!--指定javaBean生成位置-->
<javaModelGenerator targetPackage="com.jnshu.pojo"
targetProject=".\src\main\java">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!--指定sql映射文件生成的位置-->
<sqlMapGenerator targetPackage="resources"
targetProject=".\src\main\resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!--指定dao接口生成的位置 mapper接口-->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.jnshu.dao"
targetProject=".\src\main\java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!--table 指定每个表的生成策略-->
<table tableName="table1" domainObjectName="Student"/>
<!-- 还可以生出多张表格
<table tableName="table2" domainObjectName="Student2"/>-->
</context>
</generatorConfiguration>
等编写好了xml文件,在建立一个启动MyBatis Generator的类
同样在官网左边找到running mybatis generator,选择具有xml文件的java程序 点开它。
复制其中所需要的模板,修改其中的xml文件名即可生成所需要的配置文件啊,pojo类啊,dao接口等等
但是在这其中遇到一个问题,就是idea会报错说找不到这个文件,网上查了查资料。发现路径不对,修改了几次都不对,好,设置一个全程路径。成功了。
Exception in thread "main" java.io.FileNotFoundException: .\mbg.xml (系统找不到指定的文件。)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileReader.<init>(FileReader.java:72)
at org.mybatis.generator.config.xml.ConfigurationParser.parseConfiguration(ConfigurationParser.java:103)
at com.jnshu.utils.MBGTest.main(MBGTest.java:22)
可以看到生成成功了,但是由于注释太多,要修改太麻烦,看看有没有其他的方法可以免去那么多的注释,同时生成的时候,我xml文件,设置路径等等瑕疵太多,要多修改在我项目maven项目resources下又建立了一个resources文件夹。 = =! 好烂。
(生成的文件大把大把的注释,严重影响到我的眼睛了。根本看不懂)
这里翻查官网文档,找到XML Configuration 下的 <commentGenerator>
找到以下 suppressAllComments 设置为true的说明。可以知道设置为true以后免去注释,这个时候在继续找到这个范例,粘贴在xml中,改name为suppressAllComments 重新生成代码。发现没有注释了。
重新生成的结果,比之前一大串的注释好看很多了。但是我看不懂,这些这么高端的语句。因为我平时用的都比较简单。还是要处理一下的。毕竟这些太复杂了。暂时来说不懂也不会用。
用注解方式 测试一下是否成功能从ioc容器中得到获取mapper
// 制定用runwith指定junit4来进行测试
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
public class StudentMapperTest {
@Autowired
StudentMapper studentMapper;
@Test
public void StudentMapper () throws Exception{
// //1.创建SpringIOC容器
// ApplicationContext ioc = new ClassPathXmlApplicationContext( "applicationContext.xml" );
// //2.从容器中获取mapper
// StudentMapper bean=ioc.getBean( StudentMapper.class );
System.out.println( studentMapper );
报错。在找错中 = =
明天的计划:看看能不能实现增删改查和rest风格配置。
遇到的问题:不知道bean头怎么引入进来,只知道在网上找然后alt+enter。
关于test获取ioc容器报错的问题。
收获:今天收获是学习到了mybatis的逆向工程器,挺好用的。但是太高级了,还需要学习。恩,初步学习了spring和mybatis整合,接下来要学习spring mvc一起整合起来实现增删改查功能。
评论