mybatis连接数据库,mybatis可以连接远程mysql吗
其实mybatis连接数据库的问题并不复杂,但是又很多的朋友都不太了解mybatis可以连接远程mysql吗,因此呢,今天小编就来为大家分享mybatis连接数据库的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!
ibatis怎么连接mysql数据库连接池
1、Ibatis是MyBatis的前身,它是一个开源的持久层框架。它的核心是SqlMap——将实体Bean跟关系数据库进行映射,将业务代码和SQL语句的书写进行分开。
2、Ibatis是“半自动化”的ORM持久层框架。这里的“半自动化”是相对Hibernate等提供了全面的数据库封装机制的“全自动化”ORM实现而言的,“全自动”ORM实现了POJO与数据库表字段之间的映射并且实现了SQL的自动生成和执行。
3、而Ibatis的着力点,则在于POJO与SQL之间的映射关系,即Ibatis并不会为程序员在运行期自动生成并执行SQL,具体的SQL语句需要程序员编写,然后通过映射配置文件将SQL语句所需的参数和返回的结果字段映射到指定POJO中。
4、StudentDao.java文件中的代码:
packagecom.ghj.dao.imp;importjava.io.IOException;importjava.io.Reader;importjava.sql.SQLException;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importcom.ghj.dao.IStudentDao;importcom.ghj.vo.Student;importcom.ibatis.common.resources.Resources;importcom.ibatis.sqlmap.client.SqlMapClient;importcom.ibatis.sqlmap.client.SqlMapClientBuilder;/***学生管理数据访问层接口实现类**@author高焕杰*/publicclassStudentDaoimplementsIStudentDao{privateSqlMapClientsqlMapClient;publicStudentDao(){Stringresource="config/sqlMapConfig.xml";try{Readerreader=Resources.getResourceAsReader(resource);//读取配置文件sqlMapClient=SqlMapClientBuilder.buildSqlMapClient(reader);}catch(IOExceptione){e.printStackTrace();}}/***添加学生信息**@author高焕杰*/@Overridepublicbooleanadd(Studentstudent)throwsSQLException{returnsqlMapClient.update("add",student)>0;}/***依据用户名删除学生信息**@author高焕杰*/@OverridepublicbooleandeleteByUserName(StringuserName)throwsSQLException{returnsqlMapClient.delete("deleteByUserName",userName)>0;}/***依据用户名更新密码**@author高焕杰*/@OverridepublicbooleanupdatePasswordByUserName(StringuserName,Stringpassword)throwsSQLException{Map<String,Object>params=newHashMap<String,Object>();params.put("userName",userName);params.put("password",password);returnsqlMapClient.update("updatePasswordByUserName",params)>0;}/***根据学生用户名查询学生信息**@author高焕杰*/@OverridepublicStudentfindByUserName(StringuserName)throwsSQLException{return(Student)sqlMapClient.queryForObject("findByUserName",userName);}/***查询所有学生信息**@author高焕杰*/@Override@SuppressWarnings("unchecked")publicList<Student>findAll()throwsSQLException{returnsqlMapClient.queryForList("findAll");}}
student.xml文件中的代码:
<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEsqlMapPUBLIC"-//ibatis.apache.org//DTDSQLMap2.0//EN""
!--为Student类设置一个别名--><typeAliasalias="student"type="com.ghj.vo.Student"/><!--配置表和实体Bean之间的映射关系--><resultMapid="studentMap"class="com.ghj.vo.Student"><resultproperty="id"column="id"/><resultproperty="userName"column="user_name"/><resultproperty="password"column="password"/><resultproperty="state"column="state"/></resultMap><!--添加学生信息--><insertid="add"parameterClass="student">insertintostudentvalues(#id#,#userName#,#password#,#state#)</insert><!--依据用户名删除学生信息--><deleteid="deleteByUserName"parameterClass="java.lang.String">deletefromstudentwhereuser_name=#userName#</delete><!--依据用户名更新密码--><updateid="updatePasswordByUserName"parameterClass="java.util.HashMap">updatestudentsetpassword=#password#whereuser_name=#userName#</update><!--根据学生用户名查询学生信息--><selectid="findByUserName"parameterClass="string"resultMap="studentMap">select*fromstudentwhereuser_name=#userName#</select><!--查询所有学生信息--><selectid="findAll"resultMap="studentMap">select*fromstudent</select></sqlMap>
mybatis通过jdbc连接330版本数据库,插入数据报错
java.lang.NoSuchFieldError: exceptionOverride是一个常见的 Java错误。通常,这个错误是由于在编译应用程序时使用的类库版本与运行时使用的类库版本不同导致的。
MyBatis是一个持久层框架,可以通过 JDBC连接到不同类型的数据库。在连接 GBase330数据库时,您需要确保在编译应用程序时使用的 MyBatis类库版本与运行时使用的 MyBatis类库版本相同。如果两者不同,则可能会出现上述错误。
除此之外,还有一些其他因素可能会导致这个错误,例如在编译应用程序时,您引用了一个不存在的字段或方法。如果您遇到了这个错误,建议您检查您的代码,确保所有类库版本一致,并检查您的代码是否引用了不存在的字段或方法。
mybatis可以连接远程mysql吗
说一下Java代码,dao是查询接口,model是ben和对应的查询语句的xml,我感觉这样有点不好,user.xml放在dao里面比较好,等理解了就知道了,由于我是初学者所以好多东西都不是很理解,后期会给出合理的包的定义
test是我做测试用的
再说一下resources,configuration是配置文件,log4j是日志打印,其他的暂时用不到。
好来看一下代码,我按照建文件的顺序给大家来,
首先需要有一个对象,对象根据数据库建
Mybatis是什么以及Mybatis和JDBC的关系
Mybatis是什么
mybatis是一个持久层ORM框架。它内部封装了jdbc,使得开发更简洁,更高效。
MyBatis可以通过xml或注解完成ORM映射关系配置。
Mybatis和JDBC的关系
JDBC是Java提供的一个操作数据库的API; MyBatis是一个持久层ORM框架,底层是对JDBC的封装。
MyBatis对JDBC操作数据库做了一系列的优化:
(1) mybatis使用已有的连接池管理,避免浪费资源,提高程序可靠性。
(2) mybatis提供插件自动生成DAO层代码,提高编码效率和准确性。
(3)mybatis提供了一级和二级缓存,提高了程序性能。
(4) mybatis使用动态SQL语句,提高了SQL维护。(此优势是基于XML配置)
(5) mybatis对数据库操作结果进行自动映射
MyBatis的优点和缺点
优点:
简单:易于学习,易于使用,通过文档和源代du码,可以比较完全zhi的掌握它的设计思路和实现。
实用:提供了数据映射功能,提供了对底层数据访问的封装(例如ado.net),提供了DAO框架,可以使我们更容易的开发和配置我们的DAL层。
灵活:通过sql基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多。
功能完整:提供了连接管理,缓存支持,线程支持,(分布式)事物管理,通过配置作关系对象映射等数据访问层需要解决的问题。提供了DAO支持,并在DAO框架中封装了ADO.NET,NHibernate和DataMapper。
增强系统的可维护性:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
缺点:
sql工作量很大,尤其是字段多、关联表多时,更是如此。
sql依赖于数据库,导致数据库移植性差。
由于xml里标签id必须唯一,导致DAO中方法不支持方法重载。
字段映射标签和对象关系映射标签仅仅是对映射关系的描述,具体实现仍然依赖于sql。(比如配置了一对多Collection标签,如果sql里没有join子表或查询子表的话,查询后返回的对象是不具备对象关系的,即Collection的对象为null)。
DAO层过于简单,对象组装的工作量较大。
不支持级联更新、级联删除。
编写动态sql时,不方便调试,尤其逻辑复杂时。
提供的写动态sql的xml标签功能简单(连struts都比不上),编写动态sql仍然受限,且可读性低。使用不当,容易导致N+1的sql性能问题。
mybatis连接数据库的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于mybatis可以连接远程mysql吗、mybatis连接数据库的信息别忘了在本站进行查找哦。