Mybatis框架
1.应用程序的架构问题?
数据库访问层:将数据库或者其它存储的数据转换为内存的对象数据。
业务逻辑层:将内存的数据加工处理
UI层(界面层):负责数据的展示。-----MVC来处理。
数据持久化的概念:将存储在其它地方的数据转换为内存中的数据的这一过程称之为数据持久化的过程。
比如oracle开发,userinfo表
Model:数据模型 R:relation:关联 Object:对象
关键点:每条数据对应是一个实例化的有数据的对象。
2.回顾JDBC的操作:
3.ORM的框架:
1)将数据库表与对象进行映射
2)负责将执行获取的数据库的表的数据转换成内存的对象数据(数据持久化的过程)
4.Mybatis的使用。
目的:mybatis让程序将主要精力放在sql上,通过mybatis提供的映射方式,自由灵活生成(半自动化,大部分需要程序员编写sql)满足需要sql语句。
开发mybatis的步骤:
1)加载mybatis的jar包和数据库连接驱动的jar包,连接池
2)开发配置的文件mybatis-config.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"/> <!-- 配置JDBC的属性 --> <dataSource type="POOLED"> <!--表示的是数据库的连接驱动 --> <property name="driver" value="oracle.jdbc.driver.OracleDriver"/> <!-- 表示的是连接字符串 --> <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/> <property name="username" value="hotelsup"/> <property name="password" value="123"/> </dataSource> </environment> </environments> <mappers> </mappers> </configuration> |
3)开发实体类:
比如开发针对userinfo表的实体类:
package com.jinglin.hotelsup.model;
import java.io.Serializable;
public class UserInfo implements Serializable { public Integer getUserid() { return userid; }
public void setUserid(Integer userid) { this.userid = userid; }
public String getUsername() { return username; }
public void setUsername(String username) { this.username = username; }
public String getUserpwd() { return userpwd; }
public void setUserpwd(String userpwd) { this.userpwd = userpwd; }
public String getCard() { return card; }
public void setCard(String card) { this.card = card; }
public String getJob() { return job; }
public void setJob(String job) { this.job = job; }
public String getDel() { return del; }
public void setDel(String del) { this.del = del; }
private Integer userid; private String username; private String userpwd; private String card; private String job; private String del; } |
4)SQL语句的编写。(SQL配置文件) 。命名规则实体类名字+Mapper.xml
比如:UserInfoMapper.xml
<?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="com.jinglin.hotelsup.model"> <insert id="insertItem" parameterType="com.jinglin.hotelsup.model.UserInfo"> insert into userinfo(userid,username,userpwd,card,job) values(userseq.nextval,#{username},#{userpwd},#{card},#{job}) </insert> </mapper> |
5)将刚才配置的加入到mybatis-config.xml中:
<mappers> <mapper resource="com/jinglin/hotelsup/model/UserInfoMapper.xml"/> </mappers> |
6)实现mybatis操作数据库:
示例代码:
package com.jinglin.hotelsup.dao.imp;
import java.io.IOException; import java.io.InputStream;
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.apache.log4j.Logger; import org.junit.Test;
import com.jinglin.hotelsup.dao.IDaoHotel; import com.jinglin.hotelsup.model.UserInfo;
public class UserInfoDao implements IDaoHotel<UserInfo> {
static Logger logger = Logger.getLogger(UserInfoDao.class); static SqlSessionFactory sessionFactory =null; static{ //产生这一个工厂创建类,需要通过读取配置文件的信息 InputStream inputStream=null; try { inputStream = Resources.getResourceAsStream("mybatis-config.xml"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); logger.error("创建连接对象出错,错误信息:"+e.getMessage()); } sessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } @Override public int insertItem(UserInfo t) { //表示Mybatis每次与数据库交互的对象 SqlSession session = sessionFactory.openSession(); int i=session.insert("UserInfoMapper.insertItem", t); session.commit();//进行事务提交 session.close(); return i; } @Test public void testit(){ UserInfo userinfo = new UserInfo(); userinfo.setCard("222"); userinfo.setJob("程序员"); userinfo.setUsername("zhangsan11"); userinfo.setUserpwd("678"); System.out.println(insertItem(userinfo)); } }
|