Mybatils框架

Mybatils框架

1.什么是Mybatis

Mybatis是对JDBC的封装,它隐藏了具体的JDBC的API,它把SQL语句放到了配置文件中,它能自动把不同的输入数据映射到SQL语句的动态参数上,它能自动把SQL语句的执行结果映射为JAVA对象…… MyBatis是一个持久化层的框架!

Mybatis是一个ORM框架

可以说Mybatis是一个半自动的ORM框架,Hibernate是全自动的

2.

 

配置文件(SqlMapConfig.xml

基本作用就是配置JDBC连接的有关信息,比如URL、用户名、密码等等

如:

<?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>

    <typeAliases>

       <typeAlias type="cn.com.leadfar.cms.backend.model.Admin" alias="Admin"/>

    </typeAliases>

    <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/cms" />

              <property name="username" value="root" />

              <property name="password" value="mysql" />

           </dataSource>

       </environment>

    </environments>

    <mappers>

       <mapper resource="cn/com/leadfar/cms/backend/dao/impl/AdminMapper.xml" />

    </mappers>

</configuration>

 

映射文件

 

基本作用就是编写SQL语句,同时给每个SQL语句定义一个唯一标识(ID),在程序中通过此ID来调用这条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="cn.com.leadfar.cms.backend.model.Admin">

    <insert id="add" parameterType="Admin">

       insert into t_admin (username,password) values (#{username},#{password})

    </insert>

</mapper>

 

程序代码

 

       //创建SqlSession的工厂!

       SqlSessionFactory factory = null;

       try {

           //通过配置文件,创建工厂对象

           Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");

           factory = new SqlSessionFactoryBuilder().build(reader);

       } catch (IOException e1) {

           e1.printStackTrace();

       }

      

       //打开一个session

       SqlSession session = factory.openSession();

      

       try {

           //插入

           session.insert("cn.com.leadfar.cms.backend.model.Admin.add", admin);

          

           //提交事务

           session.commit();

          

       } catch (Exception e) {

           e.printStackTrace();

           session.rollback();

       } finally{

           //关闭session

           session.close();

       }

 

 3.两种xml文件的配置

1

<?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">

<!-- 整个唯一标识sql的id为namespace+id  org.leadfar.mybatis.Person.insert-->

<mapper namespace="org.leadfar.Student">

<insert id="insert"  parameterType="Student">

insert into t_user (id,name,age,birthday,money)values(seq_user_id.nextval,#{name},#{age} ,#{birthday} ,#{money})

</insert>

<update id="update"  parameterType="Student">

update t_user  set name=#{name},age=#{age},birthday=#{birthday},money=#{money} where id=#{id}

</update>

<delete id="delete"  parameterType="Student">

delete t_user  where id=#{id}

</delete>

<select id="selectone"  parameterType="int" resultType="Student">

select *  from t_user  where id=#{id} 

</select>

</mapper>

(2)

<?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>

    <!-- 别名 -->

    <typeAliases>

       <typeAlias type="org.leadfar.Student" alias="Student"/>

    </typeAliases>

    <!-- 配置数据库连接信息 -->

    <environments default="development">

       <environment id="development">

           <transactionManager type="JDBC" />

           <dataSource type="POOLED">

              <property name="driver" value="oracle.jdbc.driver.OracleDriver" />

              <property name="url" value="jdbc:oracle:thin:@localhost:1521:leadfar" />

              <property name="username" value="bbs" />

              <property name="password" value="bbs" />

           </dataSource>

       </environment>

    </environments>

    <!-- 映射文件定位 -->

    <mappers>

       <mapper resource="org/leadfar/SqlMapStudent.xml" />

    </mappers>

</configuration>

(3)dao

package org.leadfar;

import java.io.IOException;

import java.io.Reader;

import java.util.Date;

import junit.framework.TestCase;

import org.apache.ibatis.io.Resources;

import org.apache.ibatis.session.SqlSession;

import org.apache.ibatis.session.SqlSessionFactory;

import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class StudentDaoTest extends TestCase {

private SqlSessionFactory factory ;

@Override

protected void setUp() throws Exception {

Reader reader = null;

try {

reader = Resources.getResourceAsReader("Mybatils.xml");

factory =new SqlSessionFactoryBuilder().build(reader); 

catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

System.out.println("读取Mybatils.xml文件失败");

}

}

public void testSave() {

SqlSessionFactory factory = null;

Reader reader = null;

try {

reader = Resources.getResourceAsReader("Mybatils.xml");

factory =new SqlSessionFactoryBuilder().build(reader); 

catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

System.out.println("读取Mybatils.xml文件失败");

}

SqlSession session = factory.openSession();

Student s = new Student();

s.setName("小张");

s.setAge(26);

s.setBirthday(new Date());

s.setMoney(5100.0);

try{

session.insert("org.leadfar.Student.insert",s);

session.commit();

}catch(Exception e){

e.printStackTrace();

session.rollback();

}

finally{

session.close();

}

}

public void testupdate() {

SqlSessionFactory factory = null;

Reader reader = null;

try {

reader = Resources.getResourceAsReader("Mybatils.xml");

factory =new SqlSessionFactoryBuilder().build(reader); 

catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

System.out.println("读取Mybatils.xml文件失败");

}

SqlSession session = factory.openSession();

Student s = new Student();

s.setId(1);

s.setName("小sa");

s.setAge(23);

s.setBirthday(new Date());

s.setMoney(6100.20);

try{

session.insert("org.leadfar.Student.update",s);

session.commit();

}catch(Exception e){

e.printStackTrace();

session.rollback();

}

finally{

session.close();

}

}

public void testdelete() {

SqlSessionFactory factory = null;

Reader reader = null;

try {

reader = Resources.getResourceAsReader("Mybatils.xml");

factory =new SqlSessionFactoryBuilder().build(reader); 

catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

System.out.println("读取Mybatils.xml文件失败");

}

SqlSession session = factory.openSession();

Student s = new Student();

s.setId(2);

try{

session.insert("org.leadfar.Student.delete",s);

session.commit();

}catch(Exception e){

e.printStackTrace();

session.rollback();

}

finally{

session.close();

}

}

public void testselectone() {

SqlSession session = factory.openSession(true);

//Student p=(Student)session.selectOne("org.leadfar.Student.selectone",1);

Student p=(Student)session.selectOne(Student.class.getName()+".selectone", 1);

System.out.println(p);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值