Mybatis的配置和使用

来源:互联网 发布:莎莎官网app网络慢 编辑:程序博客网 时间:2024/05/19 18:40

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>  <!-- 外部属性文件导入,属性文件中通常配置数据库的连接信息 -->    <properties resource="com/etc/config/conf.properties"></properties>    <!-- 给每一实体类定义一个别名 :建议别名和类名相同-->      <typeAliases>      <!--        单个实体类的定义,建议别名和类名相同       <typeAlias alias="Grade" type="com.etc.entity.Grade"/>       -->    <!-- 自动为实体类创建一个别名,创建的命名规则是:别名于类名相同 -->        <package name="com.etc.entity"/>    </typeAliases>      <!--配置environment环境(一般情况下有三个),开发换技能,测试环境,运行环境-->    <environments default="development">          <!-- 开发环境配置,每个SqlSessionFactory对应一个环境 -->          <environment id="development">              <!-- 事务配置 type= JDBC、MANAGED 1.JDBC:这个配置直接简单使用了JDBC的提交和回滚设置。它依赖于从数据源得到的连接来管理事务范围。                   2.MANAGED:这个配置几乎没做什么。它从来不提交或回滚一个连接。而它会让容器来管理事务的整个生命周期                                             (比如Spring或JEE应用服务器的上下文)。 默认情况下它会关闭连接。然而一些容器并不希望这样,因此如果你需要从连接中停止它,将closeConnection属性设置为false -->              <transactionManager type="JDBC" />              <!-- 数据源 类型POOLED:表示使用连接池 UNPOOLED表示不使用连接池 NDI在容器中配置连接池 -->            <dataSource type="POOLED">              <!-- config.conf.properties属性中取连接数据库的信息 -->                <property name="driver" value="${driver}" />                  <property name="url" value="${url}" />                  <property name="username" value="${username}" />                  <property name="password" value="${password}" />              </dataSource>          </environment>          <!-- 测试环境配置 -->          <environment id="test">              <transactionManager type="JDBC" />              <!-- 数据源 类型POOLED:表示使用连接池 UNPOOLED表示不使用连接池 NDI在容器中配置连接池 -->            <dataSource type="POOLED">              <!-- config.conf.properties属性中取连接数据库的信息 -->                  <property name="driver" value="${driver}" />                  <property name="url" value="${url}" />                  <property name="username" value="${username}" />                  <property name="password" value="${password}" />                </dataSource>          </environment>      </environments>      <!-- 映射文件,mapper的配置文件(数据访问接口的配置文件):注意接口名称要与配置文件名称一样 -->      <mappers><!--扫描包路径下所有Mapper.xml文件--><package name="com.etc.dao"/>    </mappers>  </configuration>  


conf.properties的设置如下:

driver=com.mysql.jdbc.Driver
url=jdbc\:mysql\://localhost\:3306/myelipes?characterEncoding\=utf-8
username=root
password=123123


GradeBao代码如下:

public interface GradeBao {
public List<Grade> find();
public Grade findId(int id);

}

GradeBizImpl.java代码如下:

package com.etc.biz.impl;


import java.util.List;


import org.apache.ibatis.session.SqlSession;


import com.etc.biz.GradeBiz;
import com.etc.dao.GradeBao;
import com.etc.entity.Grade;
import com.etc.util.SqlSessionFactoryUtil;


public class GradeBizImpl implements GradeBiz{


@Override
public List<Grade> find() {
//创建对象
SqlSession sqlSession = null;
List<Grade> list = null;
try {
//调用工厂获取接口
sqlSession = SqlSessionFactoryUtil.getSqlSession();
//通过sqlSession对象获取数据访问接口,采用反射机制
GradeBao dao = sqlSession.getMapper(GradeBao.class);
//调用数据访问接口的方法 ,会自动查询映射文件中的对应得指令,返回结果集
list = dao.find();
} catch (Exception e) {
System.out.println(e.getMessage());
}finally{
sqlSession.close();
}


return list;
}


@Override
public Grade findId(int id) {
// TODO Auto-generated method stub
return null;
}


}




GradeBao.xml如下:

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- 根据节点,namespace:表示配置文件映射的数据接扣类 --><mapper namespace="com.etc.dao.GradeBao"><!-- 定义返回解过集type:表示返回的类型别名 id:表示结果集返回的名称 --><resultMap type="Grade" id="gradeMap"><!-- id:表示主键 property:实体类的属性名 column:表示数据库表中的字段名 --><id property="id" column="id"/><!-- result表示一般属性 property:实体类的属性名 column:表示数据库表中的字段名 --><result property="gradeName" column="gradeName"/></resultMap><!-- 这个select节点表示执行查询,调用接口方法则根据方法名来找节点id值,resultMap:表示查询返回的结果封装在哪个结果集中--><select id="find" resultMap="gradeMap">select * from grade</select></mapper>


SqlSessionFactoryUtil.java:代码如下

package com.etc.util;


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;


//辅助类创建SqlSession对象
public class SqlSessionFactoryUtil {
//创建SqlSessionFactory对象
static SqlSessionFactory factory = null;
//创建文件流
static InputStream is = null;
//静态代码块读取主配置文件,获取返回文件流。
static {
try {
is = Resources.getResourceAsStream("com/etc/config/mybatis-config.xml");
} catch (IOException e) {

e.printStackTrace();
}
}
//采用单例模式保证工程的唯一性
public static SqlSessionFactory getSqlSessionFactory(){
//懒汉式
if(factory == null){
//创建sqlsession工厂
factory = new SqlSessionFactoryBuilder().build(is);
}
return factory;
}
//获取Sqlsession对象
public static SqlSession getSqlSession(){
return getSqlSessionFactory().openSession();
}

}



test.java代码如下:

package com.etc;


import java.util.List;


import com.etc.biz.GradeBiz;
import com.etc.biz.impl.GradeBizImpl;
import com.etc.entity.Grade;


public class test {
public static void main(String[] args) {
GradeBiz biz = new GradeBizImpl();
List<Grade> list = biz.find();
for (Grade grade : list) {
System.out.println(grade);
}


}
}






0 0
原创粉丝点击