Mybatis的配置和使用

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 mapper
PUBLIC "-//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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值