MyBatis概念
Posted buhuang-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis概念相关的知识,希望对你有一定的参考价值。
MyBatis简介
MyBatis是一个ORM数据持久层框架
它在内部封装了通过JDBC访问数据库的操作,支持普通的SQL查询,存储过程和高级映射
将SQL语句写在配置文件中,和程序分离,利于维护
什么是ORM
ORM(Object Relational Mapping)是对象到数据库表的映射,即数据持久化
使用eclipse
1. 配置上Tomcat
Window——pereferences——server——runtime Environment
2. 配置Server
Window——show view——servers
选择阿帕奇的tomcat7,然后就可以添加项目到tomcat
3. 创建动态web项目
选择创建项目Dynamic web project
搭建MyBatis开发环境
1. 导入MyBatis的jar
log4j-1.2.17.jar——日志记录
mybatis-3.2.2.jar——核心包
mybatis-3.2.2-sources.jar——源码包MyBatis
mysql-connector-java-5.1.0-bin.jar——mysql驱动
有四个,直接放lib下即可
2.配置DTD
配置config和mapper的DTD,让文件自动联想(自动提示)
3. 添加mybatis配置文件
在项目下面创建一个和src同级的文件夹resources
1. 导入mybatis-config.xml (MyBatis核心配置文件)
在 settings 节点下创建 typeAliases
<typeAliases>
<!-- 一般都直接指定包名。使用时直接写实体类的名称即可 -->
<package name="com.xxx.pojo"/>
</typeAliases>
在最下面的mappers节点中创建mapper节点,将mapper文件加载到配置文件中(每个mapper文件都需要配置一下)
<mappers> <mapper resource="com/xxx/dao/UserMapper.xml" /> </mappers>
2. 导入database.properties
database.properties文件用来指定连接数据库的配置信息
3. 导入log4j.properties
error:将日志输出在外部文件
4.创建工具类util
将(核心代码)读取配置文件的操作封装起来
创建MyBatisUtil工具类
public class MyBatisUtil { //使用单例方式创建factory对象 private static SqlSessionFactory factory=null; //在静态块中初始化factory对象 static { //读取配置文件,需要用io流来读取 InputStream is; try { //getResourceAsStream 按照访问输出流的方式获取资源 //参数就是要读取的资源 is = Resources.getResourceAsStream("mybatis-config.xml"); //创建SqlSessionFactory对象 factory = new SqlSessionFactoryBuilder().build(is); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } // 开启会话 public static SqlSession openSqlSession() { return factory.openSession(true); } // 关闭会话 public static void closeSqlSession(SqlSession session) { session.close(); } }
5. 创建实体类pojo
6.在dao中创建接口
接口的方法的名称必须和mapper.xml的对应的SQL语块的id一样
7.在dao中创建mapper.xml配置文件
在根节点mapper中,添加属性namespace
namespace:命名空间
namespace指定接口类的位置和名称(代表映射文件的存放位置,关联绑定接口)
添加增删改查语句
8.创建测试用例类test
未把核心代码封装到工具类的demo
1 //每个方法都必须加上@Test注解 2 @Test 3 public void test_Demo_01() { 4 //将SqlSession对象创建到外层 5 SqlSession session=null; 6 try { 7 //读取配置文件,需要用io流来读取 8 //getResourceAsStream 按照访问输出流的方式获取资源 9 //参数就是要读取的资源 10 InputStream is=Resources.getResourceAsStream("mybatis-config.xml"); 11 //创建SqlSessionFactory对象,读取配置文件 12 //SqlSessionFactory 就代表sqlsession的工厂 13 SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(is); 14 //创建sqlsession对象 15 //openSession 打开会话,true默认自动提交事务 16 session = factory.openSession(true); 17 18 //调用mapper中的select方法 19 //selectOne 表示只查询了一个数 20 int count=session.selectOne("com.xxx.dao.UserMapper.UserCount"); 21 22 //输出查询出来的结果 23 System.out.println("总行数是:"+count); 24 } catch (IOException e) { 25 // TODO Auto-generated catch block 26 e.printStackTrace(); 27 }finally { 28 //如果session不是空,则关闭 29 if(session!=null) { 30 session.close(); 31 } 32 } 33 }
使用封装类后的demo
@Test //这是使用工具类的示例 public void test_Demo_02() { //将SqlSession对象创建到外层 SqlSession session=null; try { //将读取配置文件的代码封装到了工具类,所以用它创建session即可 session = MyBatisUtil.openSqlSession(); //调用mapper中的select方法 //selectOne 表示只查询了一个数 int count=session.selectOne("com.xxx.dao.UserMapper.UserCount"); //输出查询出来的结果 System.out.println("总行数是:"+count); }finally { //释放资源 MyBatisUtil.closeSqlSession(session); } }
将结果输出到日志中
//在方法外部获取日志,减少创建 private Logger logger = Logger.getLogger(test01.class); //将把日志保存外部文件中,其他的方法都不会保存到外部文件 logger.error(user);
使用Mapper接口方式操作数据
//使用Mapper接口方式操作数据,需要指定一个接口类 //然后.它相应的方法 List<User> users=session.getMapper(UserMapper.class).userList();
以上是关于MyBatis概念的主要内容,如果未能解决你的问题,请参考以下文章
SSM-MyBatis-05:Mybatis中别名,sql片段和模糊查询加getMapper