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);
}

}
}
 
 
 
 
---------------------
作者:我发现自己又帅了
来源:CSDN
原文:https://blog.csdn.net/zhu1qiu/article/details/70766868
版权声明:本文为博主原创文章,转载请附上博文链接!
posted @ 2019-04-29 10:50  hzlshijie  阅读(130)  评论(0编辑  收藏  举报