MyBatis数据持久化(二)建立数据库会话
2015-06-14 19:37
405 查看
上篇文章中介绍了我们使用mybatis前的准备工作,并在程序中通过jdbc与mysql数据库成功建立连接,接下来介绍如何使用mybatis与数据库建立会话。我们需要以下几个步骤:
1.在build path中引入mybatis的jar包。
2.新建mybatis数据库配置文件
3.新建sql语句配置文件User.xml,我们所有的sql语句均写在该文件中,内容如下:
这里我们通过select标签添加一条select语句,并通过mapper标签的namespace属性为这些sql增加一个命名空间。
4.新建持久化映射类
User类有三个属性,分别和数据库中的字段对应,我们需要为每个属性增加setter和getter方法,除此之外,为了方便我们打印对象的属性信息,笔者重写了User类的toString方法。
5.新建测试类
要建立数据库会话,我们首先需要一个SqlSessionFactory对象,可以通过SqlSessionFactoryBuilder对象的build方法获取,它需要一个和数据库配置文件相关的输入流作为参数。
我们通过
有了SqlSessionFactory对象,我们通过SqlSessionFactory类的openSession方法就可以建立一个数据库会话,它返回一个DefaultSqlSession对象。
通过DefaultSqlSession对象,我们可以对数据库进行各种操作,这里调用selectOne方法进行查询,第一个参数指定sql配置文件中配置的sql语句,形式为
我们通过
最后当数据库会话不再使用时,一定不要忘了关闭。
6.在Outline视图MyBatisConn的testMybatisConn方法上点击右键,Debug As->Junit Test。
控制台中输出:
整个项目的文件结构如下图所示:
在接下来的文章中,我们会接触到更多关于mybatis的配置和使用方法。
项目源码:https://github.com/rongbo-j/mybatis-blog
1.在build path中引入mybatis的jar包。
2.新建mybatis数据库配置文件
SqlMapConfig.xml,它是一个xml文件,可以是任意名称,内容如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=UTF8"/> <property name="username" value="root"/> <property name="password" value=""/> </dataSource> </environment> </environments> <mappers> <mapper resource="User.xml"/> </mappers> </configuration>
3.新建sql语句配置文件User.xml,我们所有的sql语句均写在该文件中,内容如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="User"> <select id="queryUserInfoByName" parameterType="string" resultType="com.mybatis.domain.User"> select * from User where username = #{username} </select> </mapper>
这里我们通过select标签添加一条select语句,并通过mapper标签的namespace属性为这些sql增加一个命名空间。
4.新建持久化映射类
com.mybatis.domain.User,内容如下:
package com.mybatis.domain; public class User { private String username; private String password; private String phone; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } //为方便输出信息,我们重写toString方法 @Override public String toString() { return "username:" + username + ",password:" + password + ",phone" + phone; } }
User类有三个属性,分别和数据库中的字段对应,我们需要为每个属性增加setter和getter方法,除此之外,为了方便我们打印对象的属性信息,笔者重写了User类的toString方法。
5.新建测试类
com.mybatis.exam2.MyBatisConn,代码如下:
package com.mybatis.exam2; import java.io.Reader; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Test; import com.mybatis.domain.User; public class MyBatisConn{ @Test public void testMybatisConn() { SqlSession session = null; try { Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml"); SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader); //创建一个数据库会话 session = sessionFactory.openSession(); User user = (User)session.selectOne("User.queryUserInfoByName","小王"); //此处会调用user的toString方法 System.out.println(user); } catch (Exception e) { // TODO Auto-generated catch block if(null != session) { session.close(); } e.printStackTrace(); } //关闭会话 if(null != session) { session.close(); } } }
要建立数据库会话,我们首先需要一个SqlSessionFactory对象,可以通过SqlSessionFactoryBuilder对象的build方法获取,它需要一个和数据库配置文件相关的输入流作为参数。
我们通过
Resources.getResourceAsReader("SqlMapConfig.xml")获取一个输入流对象。
有了SqlSessionFactory对象,我们通过SqlSessionFactory类的openSession方法就可以建立一个数据库会话,它返回一个DefaultSqlSession对象。
通过DefaultSqlSession对象,我们可以对数据库进行各种操作,这里调用selectOne方法进行查询,第一个参数指定sql配置文件中配置的sql语句,形式为
命名空间 + sql语句的ID。第二个参数会被传递到sql中:
select * from User where username = #{username}
我们通过
#{username}这种形式定义个一个占位符,在本例中最终生成的sql语句为:
select * from User where username = '小王'
最后当数据库会话不再使用时,一定不要忘了关闭。
6.在Outline视图MyBatisConn的testMybatisConn方法上点击右键,Debug As->Junit Test。
控制台中输出:
username:小王,password:123456a,phone13535999538
整个项目的文件结构如下图所示:
在接下来的文章中,我们会接触到更多关于mybatis的配置和使用方法。
项目源码:https://github.com/rongbo-j/mybatis-blog
相关文章推荐
- MyBatis数据持久化(二)建立数据库会话
- VC中ACCESS数据库ADO组件的编程参考
- C#操作SQL Server数据库
- Oracle死锁查询及处理
- Oracle EBS学习总结之OAF开发
- Oracle游标、过程与引用类型
- [考试维护]之数据库的学习
- 解决VS2010连接MySQL出现的问题
- SQL存储原理及聚集索引、非聚集索引、唯一索引、主键约束的关系(新)
- Oracle安装
- 数据库水平切分(拆库拆表)的实现原理解析(转)
- mysql分表,分区的区别和联系
- Oracle中生成uuid的方法
- 分布式缓存Memcache
- MYSQL--事务处理
- 从 mysql 客户端导出数据库 mysqldump
- mysql 常用命令
- mysql 数据类型
- SQL优化
- 各种数据库的jdbc驱动下载及连接方式