sqlite整合spring,springmvc

因为需要用到轻量级的数据库,所以使用了sqlite,按照网上给的例子,自己整合了一下原本的ssm项目,现在把项目整合后的一些代码写出来,供以后使用

先看下项目目录

sqlite整合spring,springmvc_第1张图片

首先要注意的是下载sqlite-jdbc-3.8.11.2.jar这样的架包, 使用maven配置的那个jar包,在项目中无法引用,所以必须下载下来,然后放在lib中

然后是配置的pom.xml中需要在build中添加一个plugin插件

  
      
        
        maven-compiler-plugin  
          
          1.5  
          1.5  
          UTF-8  
                 
                   ${basedir}/WebRoot/WEB-INF/lib  
                 
          
        
      
  

这样就可以引用本地添加的jar包了。

 下面是applicationContext-sqlite.xml的配置






    
    
        
        
        
        
    


    
        
            
        
    

    
    
        
            
        
    




然后是web.xml里面需要添加对应的applicationContext-sqlite.xml地址,要不,无法进行调用



    jmth5
    org.springframework.web.servlet.DispatcherServlet
    
      contextConfigLocation
      classpath:/conf/applicationContext.xml,classpath:conf/applicationContext-sqlite.xml
    
    1
    true
  


这些配置好后,就可以写sqlUtil工具类了。

package com.jmtapp.jmth5.mapper;

import org.springframework.stereotype.Repository;

import javax.annotation.Resource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * sqlite的工具类
 * Created by T430 on 2017/7/5.
 */
@Repository
public class sqliteUtil {

    /**
     * 数据源
     */
    @Resource
    private  DataSource sqliteDataSource;

    /**
     * 获取数据库连接
     * @return conn
     */
    public  Connection getConnection() throws SQLException {
        Connection conn = sqliteDataSource.getConnection();
        conn.setAutoCommit(false);
        return conn;
    }

    /**
     * 关闭数据库连接
     * @param conn
     */
    public  void close(Connection conn, Statement stmt, ResultSet rs) {
        if (null != rs) {
            try {
                rs.close();
            } catch (SQLException ex) {

            }
            rs = null;
        }
        if (null != stmt) {
            try {
                stmt.close();
            } catch (SQLException ex) {

            }
            stmt = null;
        }
        if (null != rs) {
            try {
                rs.close();
            } catch (SQLException ex) {

            }
            rs = null;
        }
    }
}

需要注意的是,因为调用了@Respiratory,所以这个工具类需要放到Dao的所在目录下,这样才能被spring扫描到,否则无法使用


然后是配置Dao接口

package com.jmtapp.jmth5.mapper;

import com.jmtapp.jmth5.pojo.hz_index;

import java.util.List;

/**
 * Created by T430 on 2017/7/5.
 */

public interface hZDao {

    public List getAllParent();//获取所有父类信息以及该父类下的第一级子类集合
    public hz_index getChildInfo(Integer id);//通过父类编号获取该父类下的户政信息

}

其实现层

package com.jmtapp.jmth5.mapper.impl;


import com.jmtapp.jmth5.mapper.hZDao;
import com.jmtapp.jmth5.pojo.hz_index;
import com.jmtapp.jmth5.mapper.sqliteUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import org.springframework.web.bind.annotation.RequestMapping;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by T430 on 2017/7/5.
 */
@Repository(value = "hzDao")
public class hzDaoImpl implements hZDao {

    @Autowired
   private sqliteUtil sUtil;

    private JdbcTemplate jdbcTemplate;

    Connection conn=null;
    Statement stmt =null;
    ResultSet rs=null;

    /**
     * 获取所有的父类业务的集合
     * 其中每个父类里包含第一级子类的集合
     * @return
     */
    public List getAllParent() {
      //  List li=new ArrayList();
        List hzIndexList=null;


        try {
            conn=sUtil.getConnection();//链接数据库

             stmt =conn.createStatement();//创建数据库
            String sql="select * from hz_index where parent='0'";//编写sql语句

            //查询
             rs= stmt.executeQuery(sql);
            hz_index hz=null;
            hzIndexList=new ArrayList<>();//户政集合

         while (rs.next()){
           // System.out.println("名字:==="+rs.getString("name"));
             hz=new hz_index();
             hz.setId(rs.getInt("id"));;
             hz.setName(rs.getString("name"));

             hzIndexList.add(hz);
         }
         //新建另一个实体
            hz_index hz2=null;

            for (hz_index hh: hzIndexList
                 ) {
               // System.out.println("编号:==="+hh.getId());

                String sql2= "select * from  hz_index where parent= '"+hh.getId()+"'";

                //查询子类
                ResultSet rs2=stmt.executeQuery(sql2);
                List hzIndexList2=new ArrayList<>();
                //遍历
                while(rs2.next()){
                    hz2=new hz_index();
                    hz2.setId(rs2.getInt("id"));
                    hz2.setName(rs2.getString("name"));

                    hzIndexList2.add(hz2);
                    hh.setChildren(hzIndexList2);//把查询到的子类集合放到  户政的子类集合中
                }

            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            sUtil.close(conn,stmt,rs);//关闭数据库
        }
        return hzIndexList;
    }


    /**
     * 通过父类ID,获取该父类下所有的子类信息
     * @param id
     * @return
     */
    public hz_index getChildInfo(Integer id){
        hz_index hz= new hz_index();
        try {
            conn=sUtil.getConnection();

            stmt =conn.createStatement();

            String sql="select * from hz_index where parent ='"+id+"'";

            rs=stmt.executeQuery(sql);

            while (rs.next()){
                hz.setId(rs.getInt("id"));
                hz.setName(rs.getString("name"));
                hz.setValue(rs.getString("value"));

            }

        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            sUtil.close(conn,stmt,rs);
        }
        return hz;
    }







    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

    public JdbcTemplate getJdbcTemplate() {
        return jdbcTemplate;
    }
}

其Service层和实现层,还有Controller层都和原来ssm框架中编写一样,也就不在编写代码了。主要层的代码已经粘贴, 以后有需要的可以参考下








你可能感兴趣的:(sqlite)