发表于: 2017-07-20 15:20:53

2 1305


今日完成的事情:编辑中

还是在学习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一起整合起来实现增删改查功能。


返回列表 返回列表
评论

    分享到