增使用的是DBManager的哪些方法

增使用的是DBManager的哪些方法,第1张

1.DaoConfig daoConfig=XUtil.getDaoConfig()

2.DbManager db = x.getDb(daoConfig)

这里我要告诉大家的是,数据里面表的创建的时间,只有在你对数据库里面的 *** 作涉及到这张表的 *** 作时,会先判断当前的表是否存在,如果不存在,才会创建一张表,如果存在,才会进行相应的CRUD *** 作,但是只要我们想进行一张表的CRUD *** 作,我们必须先执行上面的2步,通俗点说就是必须拿到一个Dbmanger这个对象,我为什么这么说呢?那么咱们就先看一下DbManger的庐山真面目吧。

DbManager部分源码如下:

[java] view plain copy print?

public interface DbManager extends Closeable {

DaoConfig getDaoConfig()

SQLiteDatabase getDatabase()

/**

* 保存实体类或实体类的List到数据库,

* 如果该类型的id是自动生成的, 则保存完后会给id赋值.

*

* @param entity

* @return

* @throws DbException

*/

boolean saveBindingId(Object entity) throws DbException

/**

* 保存或更新实体类或实体类的List到数据库, 根据id对应的数据是否存在.

*

* @param entity

* @throws DbException

*/

void saveOrUpdate(Object entity) throws DbException

/**

* 保存实体类或实体类的List到数据库

*

* @param entity

* @throws DbException

*/

void save(Object entity) throws DbException

/**

* 保存或更新实体类或实体类的List到数据库, 根据id和其他唯一索引判断数据是否存在.

*

* @param entity

* @throws DbException

*/

void replace(Object entity) throws DbException

///////////// delete

void deleteById(Class<?>entityType, Object idValue) throws DbException

void delete(Object entity) throws DbException

void delete(Class<?>entityType) throws DbException

void delete(Class<?>entityType, WhereBuilder whereBuilder) throws DbException

///////////// update

void update(Object entity, String... updateColumnNames) throws DbException

void update(Object entity, WhereBuilder whereBuilder, String... updateColumnNames) throws DbException

///////////// find

<T>T findById(Class<T>entityType, Object idValue) throws DbException

<T>T findFirst(Class<T>entityType) throws DbException

<T>List<T>findAll(Class<T>entityType) throws DbException

<T>Selector<T>selector(Class<T>entityType) throws DbException

DbModel findDbModelFirst(SqlInfo sqlInfo) throws DbException

List<DbModel>findDbModelAll(SqlInfo sqlInfo) throws DbException

///////////// table

/**

* 删除表

*

* @param entityType

* @throws DbException

*/

void dropTable(Class<?>entityType) throws DbException

/**

* 添加一列,

* 新的entityType中必须定义了这个列的属性.

*

* @param entityType

* @param column

* @throws DbException

*/

void addColumn(Class<?>entityType, String column) throws DbException

///////////// db

/**

* 删除库

*

* @throws DbException

*/

void dropDb() throws DbException

/**

* 关闭数据库,

* xUtils对同一个库的链接是单实例的, 一般不需要关闭它.

*

* @throws IOException

*/

void close() throws IOException

///////////// custom

void execNonQuery(SqlInfo sqlInfo) throws DbException

void execNonQuery(String sql) throws DbException

Cursor execQuery(SqlInfo sqlInfo) throws DbException

Cursor execQuery(String sql) throws DbException

}

通过DbManager这个类我们知道主要它做了以下几件事情:

1.getDaoConfig 获取数据库的配置信息

2.getDatabase 获取数据库实例

3.saveBindingId saveOrUpdate save 插入数据的3个方法(保存数据)

4.replace 只有存在唯一索引时才有用 慎重

5.delete *** 作的4种方法(删除数据)

6.update *** 作的2种方法(修改数据)

7.find *** 作6种方法(查询数据)

8.dropTable 删除表

9.addColumn 添加一列

10.dropDb 删除数据库

项目,需要访问多个数据库,而且需要在服务器运行不重新启动的情况下,动态的修改spring中配置的数据源datasource,在网上找了很多资料,最后找到了适合我的方法,下面总结一下。

spring的配置文件是在容器启动的时候就加载到内存中的,如果手动改了application.xml,我们必须要重新启动服务器配置文件才会生效。而在spring中提供了一个类WebApplicationContext,这个类可以让你获得一些bean,可以修改内存中的信息,我就是通过这个类来实现的。下面是我具体的代码。

package com.southdigital.hospital

import java.io.IOException

import javax.servlet.ServletContext

import javax.servlet.ServletException

import javax.servlet.http.HttpServlet

import javax.servlet.http.HttpServletRequest

import javax.servlet.http.HttpServletResponse

import org.springframework.web.context.WebApplicationContext

import org.springframework.web.context.support.WebApplicationContextUtils

import com.mchange.v2.c3p0.ComboPooledDataSource

public class ChangeSpringConfig extends HttpServlet

{

private String ipAddress = "127.0.0.1"

/**

* The doGet method of the servlet. <br>

*

* This method is called when a form has its tag value method equals to get.

*

* @param request the request send by the client to the server

* @param response the response send by the server to the client

* @throws ServletException if an error occurred

* @throws IOException if an error occurred

*/

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException

{

doPost(request, response)

}

/**

* The doPost method of the servlet. <br>

*

* This method is called when a form has its tag value method equals to post.

*

* @param request the request send by the client to the server

* @param response the response send by the server to the client

* @throws ServletException if an error occurred

* @throws IOException if an error occurred

*/

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException

{

//先取得servleContext对象,提供给spring的WebApplicationUtils来动态修改applicationContext.xml

ipAddress = request.getParameter("ipAddress")

System.out.println(ipAddress)

ServletContext servletContext = this.getServletContext()

WebApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(servletContext)

ComboPooledDataSource cpds = (ComboPooledDataSource) applicationContext.getBean("dataSource")

cpds.setJdbcUrl("jdbc:mysql://"+ipAddress+":3306/ssh")

}

}

注意:通过这种方法修改applicationContext.xml文件的时候用c3p0,而不可以用dbcp,dbcp不支持动态修改读取到内存里面的数据。

spring 3.1已经支持了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6424585.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-22
下一篇 2023-03-22

发表评论

登录后才能评论

评论列表(0条)

保存