Spring + mybatis 创建简单的java程序

学习框架工具的最好,也是最快的方法就是通过实例来学习,本实例使用spring和mybatis构建了一个java小程序,该程序没有什么实际的业务功能,只是通过mybatis简单读取数据库的数据。

一、构建数据库

使用navicat工具连接数据库后,创建user表如下:


user表

关于数据库表的创建一般要做以下几点:

  1. 设定类型:一般常用的类型就是bigint,对应于java中较长的整型如long;varchar,用于储存字符串;int 对应java中的integer。
  2. 字段的长度:指的是字符长度,并不是计算机储存数据使用的位的长度,如root字段长度为1,则该字段可以填的值为0到9,这些一位数。创建表时字段需要多大就给多长。
  3. 字段的其他设置:在页面的下方,截图上没有;包括字段的注释(描述字段的作用),整型字段要不要设置为无符号(如果该字段没有负值的话就添上),默认值(varchar类型的默认值需要用单引号括起来)
  4. 外键:用于关联多张表的字段,如另张成绩表上还有一个字段user_id,该字段的值全部来源于user表上的id字段,就可以在成绩表上添加外键,关联user表上的id字段;
  5. 表注释:表的注释,描述表的用途,虽然表名能描述出表的用途,但是如果后面业务逻辑变复杂,表变得多起来,添上注释还是有点好处的,也便于维护。
    其他的设置就和实际的业务有关了;

二、创建maven项目

使用eclipse右击new - project,选择maven project,选择项目路径,项目类型选择,uqickstart结尾,填写groupid组名,artifactid项目名,finish即可。
创建maven项目的好处就是不用自己去找jar包,把要用到的jar包写在配置文件中即可,项目会自动引入。创建好的项目后分包如下:


项目结构.PNG
  1. bean:存放所有bean文件,数据库中查询到的结果要转换成java对象;
  2. config:存放所有的spring,mybatis的配置文件;
  3. dao:存放mybatis连接数据库要用到的mapper类;相当于存放sql语句的地方;
  4. mappers:存放mybatis的xml文件,和dao中的文件相对应。
  5. util:自定义的工具类;

三、配置文件

使用框架工具最麻烦的就是配置文件了,不过配置文件也是大同小异,可以根据自己的需要在别人的配置文件上进行修改,配置文件写好后,业务逻辑的代码就会变得特别简单。

1. maven的pom文件

maven的pom文件就是配置要用到的所有jar包的地方,文件内容如下:


  4.0.0

  com.yesongdh
  springInstance
  0.0.1-SNAPSHOT
  jar

  springInstance
  http://maven.apache.org

  
    UTF-8
    1.7.25
    4.3.12.RELEASE
    2.8.2
    3.4.5
    1.3.1
  

  
    
      junit
      junit
      3.8.1
      test
    
    
    
    
        com.alibaba
        druid
        1.1.3
    
    
    
    
        mysql
        mysql-connector-java
        5.1.44
    

    
    
        org.mybatis
        mybatis
        ${mybatis.version}
    
    
      
      
        org.mybatis  
        mybatis-spring  
        ${mybatis.spring.version}  
    

    
    
        org.springframework
        spring-test
        ${springmvc.version}
    
    
        org.springframework
        spring-core
        ${springmvc.version}
    
    
        org.springframework
        spring-oxm
        ${springmvc.version}
    
    
        org.springframework
        spring-tx
        ${springmvc.version}
    
    
        org.springframework
        spring-jdbc
        ${springmvc.version}
    
    
        org.springframework
        spring-aop
        ${springmvc.version}
    
    
        org.springframework
        spring-context
        ${springmvc.version}
    
    
        org.springframework
        spring-context-support
        ${springmvc.version}
    
    
        org.springframework
        spring-expression
        ${springmvc.version}
    
    
        org.springframework
        spring-orm
        ${springmvc.version}
    
    
    
        org.apache.maven
        maven-model
        2.0.2
    
  
  
  
       
           
               org.apache.maven.plugins
               maven-compiler-plugin
               
                   1.7
                   1.7
               
           
       
  


主要引入了druid数据库连接池、mysql数据库的jdbc驱动、mybatis数据库持久化框架、spring框架包;最后一个是jdk插件,每次建完项目后,项目使用的jdk包都是1.5的,只有在pom文件中添加这一段配置后项目才会使用jdk1.7或者更新的jdk版本。
选中项目右击,选择maven - update project,把项目刷新一下

2. 配置spring和mybatis框架文件

在config文件夹下创建如下两个文件:jdbc.property和mybatis.xml


mybatis配置.PNG

jdbcs.properties主要是数据库连接的相关设置,内容如下:

# MySQL
#============================================================================
#test MySQL
jdbc.mysql.driver = com.mysql.jdbc.Driver
jdbc.mysql.url = jdbc:mysql://localhost:3306/test?useSSL=true
jdbc.mysql.username = root
jdbc.mysql.password = SQL1137660
#mybatis config
#============================================================================
jdbc.initialSize = 10
jdbc.minIdle = 10
jdbc.maxActive = 10
jdbc.testWhileIdle = true
jdbc.timeBetweenEvictionRunsMillis = 30000
jdbc.minEvictableIdleTimeMillis = 60000
jdbc.validationQuery = SELECT 'x'
jdbc.testOnBorrow = false
jdbc.testOnReturn = false
jdbc.poolPreparedStatements = true
jdbc.maxOpenPreparedStatements = 100

mybatis.xml文件内容如下:




    
    
        
    
    
    
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
    

    
    
        
        
        
    

    
    
        
        
    
    
    
    
        
    
    
    
    

mybatis.xml主要是设置数据库的数据源、引入所有mybatis 的dao文件和xml文件、使用spring事务管理。

四、业务代码

1. 创建bean文件和dao文件

  1. 在bean文件夹下创建user.java;内容如下:
public class User {
    private String id;
    
    private String name;
    
    private int sex;
    
    private String phone;
    
    private String email;
    
    private int root;
    
    private String password;

后半部分全是字段的get/set方法,还有改写的tostring方法用于观察最后的打印结构,就不贴出来了。
关于bean类要注意:
bean类所有字段的名称一定要和查询语句的字段名对应;如:select user_id, name from score; 选取了数据库score表的user_id和name字段,这些字段都要填充到user.java类中,那user.java中的字段名必须为user_id和name,不然最后得到的user对象的id字段肯定为空。或者更改sql语句为select user_id as id, name from score;给数据库字段别名。框架可能使用了反射,读取了java对象的所有字段名,根据字段名和数据库的查询结果字段名一一对应,最后通过get和set方法个java对象的字段赋值。

  1. 在dao文件夹下创建dao文件,文件类型为接口,UserMapper.java,内容如下:
@MapperScan
public interface UserMapper {
    
    @Select("select id, name, sex, phone, email, root, password from user")
    List getUsers();
}

注意那个@mapperscan注解和@select注解,mybatis就是扫描那两个注解把文件扫描进springcontext中的。查询结果如果不止一个的话就需要用list,如果只有一个那就填User类型。
其实所有的sql语句也可以写在mappers包的xml中,和dao包这个的类进行关联。如果要对sql语句的复用的话可能就需要把sql语句写在xml文件中比较好,不过我更倾向于写在dao文件中,写代码的时候就可以少打开一个窗口,更方便。

  1. 在mappers目录创建UserMapper.xml文件,内容如下:




sql语句可以写在这里,和dao包中的文件通过这里的namespace联系起来,dao包中只提供接口方法,这里提供sql;不过也可以像我一样通过注解的方式,把sql语句写在dao包里,这里就可以什么都不用写。在修改时就不用同时打开三个文件了。

2. App业务代码

app中的代码如下:

public class App 
{
    public static void main( String[] args )
    {
        ApplicationContext context = new ClassPathXmlApplicationContext("config/mybatis.xml");
        UserMapper userMapper = context.getBean(UserMapper.class);
        List users = userMapper.getUsers();
        System.out.println(users);
    }
}

打印结果如下:


打印结果.PNG

五、打包成可执行文件

java引用程序可以被打包成可执行 jar 文件,eclipse右击选择export,选择 runnable JAR file,在launch config 中选择包含main方法的类,下面是三种对于引用的库的处理方式:把需要的jar包都抽取到生成的jar文件中,打包所有需要的库文件到生成的jar文件中,复制需要的库文件到子目录中;这里选择最后一个;然后finish就可以了。


打包.PNG

jar文件所在位置,shift + 右击运行power shell,输入 java -jar ./springInstance.jar,运行结果如下,和eclipse的运行结果相同:


运行结果.PNG

六、总结

整理一下整个程序的逻辑流程:
在主程序中ClassPathXmlApplicationContext("config/mybatis.xml");读取spring的配置文件,配置文件主要做了三件事:

  1. 使用com.alibaba.druid.pool.DruidDataSource建立线程池数据源;
  2. mybatis 扫描mappers文件夹下的mapper.xml文件和dao包下的dao文件,将扫描到的文件加入到spring配置文件中;
  3. 事务管理器和事务注解管理;其实还可以加入一些从程序一开始就需要运行的初始化程序。

最后主程序从applicationContext中获取dao包中的初始化好的实例,调用dao方法。

个人理解spring是另一种写代码的风格,用配置文件的方式来实例化对象,所有配置文件中的类都可以在applicationContext中找到,很方便。spring和mybatis的配合,mybatis通过扫描注解和文件的方式,把所有的数据库连接对象都添加到spring中进行实例化,在编写业务代码时就可以直接在applicationContex对象中获取,有效地减少了业务代码量。
源码下载:https://pan.baidu.com/s/1fYTIzsT6xpmyjsNZCvlwfg
如果有不对的地方欢迎指正讨论

你可能感兴趣的:(Spring + mybatis 创建简单的java程序)