首先创建类、接口、数据库:

entity包下Admin类:
package com.wbg.springJavaConfig.entity;

public class Admin {
private int aId;
private String aAccount;
private String aPassword;
private String aRank; public Admin(int aId, String aAccount, String aPassword, String aRank) {
this.aId = aId;
this.aAccount = aAccount;
this.aPassword = aPassword;
this.aRank = aRank;
} public int getaId() {
return aId;
} public void setaId(int aId) {
this.aId = aId;
} public String getaAccount() {
return aAccount;
} public void setaAccount(String aAccount) {
this.aAccount = aAccount;
} public String getaPassword() {
return aPassword;
} public void setaPassword(String aPassword) {
this.aPassword = aPassword;
} public String getaRank() {
return aRank;
} public void setaRank(String aRank) {
this.aRank = aRank;
} @Override
public String toString() {
return "Admin{" +
"aId=" + aId +
", aAccount='" + aAccount + '\'' +
", aPassword='" + aPassword + '\'' +
", aRank='" + aRank + '\'' +
'}';
}
}

 dao包下的AdminDao接口

public interface AdminDao {

    List<Admin> listAll();
Admin getById(int aId);
}

service包下AdminService

public interface AdminService {
List<Admin> listAll(); Admin getById(int aId);
}

impl包下AdminServiceImpl

public class AdminServiceImpl implements AdminService {

    @Override
public List<Admin> listAll() {
return null;
} @Override
public Admin getById(int aId) {
return null;
}
}

一、使用xml构建SqlSessionFactory

 <!-- 数据库连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="org.mariadb.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:mariadb://localhost:3306/wbg_logistics" />
<property name="user" value="root" />
<property name="password" value="123456" /> <!-- c3p0连接池的私有属性 -->
<property name="maxPoolSize" value="30" />
<property name="minPoolSize" value="10" />
<!-- 关闭连接后不自动commit -->
<property name="autoCommitOnClose" value="false" />
<!-- 获取连接超时时间 -->
<property name="checkoutTimeout" value="10000" />
<!-- 当获取连接失败重试次数 -->
<property name="acquireRetryAttempts" value="2" />
</bean> <!-- 配置SqlSessionFactory对象 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 注入数据库连接池 -->
<property name="dataSource" ref="dataSource" />
<!-- 配置MyBaties全局配置文件:mybatis-config.xml -->
<property name="configLocation" value="classpath:mybatis-config.xml" />
<!-- 扫描entity包 使用别名 -->
<property name="typeAliasesPackage" value="com.wbg.springJavaConfig.dao" />
<!-- 扫描sql配置文件:mapper需要的xml文件 -->
<property name="mapperLocations" value="classpath:mapper/*.xml" />
</bean>

二、使用代码构建SqlSessionFactory

第一步:配置DataSource

有三种方式,推荐使用C3p0

 /**
* C3p0的连接池
* @return
* @throws PropertyVetoException
*/
@Bean
public DataSource getC3p0DataSource() throws PropertyVetoException {
ComboPooledDataSource dataSource=new ComboPooledDataSource();
dataSource.setDriverClass("org.mariadb.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mariadb://localhost:3306/wbg_logistics");
dataSource.setUser("root");
dataSource.setPassword("123456");
dataSource.setMaxPoolSize(30);
return dataSource;
}
/**
* MyBatis的连接池
* @return
*/
//@Bean
public DataSource getMyBatisDataSource(){
//数据库连接池
PooledDataSource dataSource = new PooledDataSource();
//设驱动
dataSource.setDriver("org.mariadb.jdbc.Driver");
//用户名
dataSource.setUsername("root");
//密码
dataSource.setPassword("123456");
//数据库连接
dataSource.setUrl("jdbc:mariadb://localhost:3306/wbg_logistics");
dataSource.setDefaultAutoCommit(false);
return dataSource;
}
/**
* Spring自带的SimpleDriverDataSource
* @return
*/
//@Bean
public DataSource getSimpleDriverDataSource(){
SimpleDriverDataSource dataSource=new SimpleDriverDataSource();
return dataSource;
}

第二步:配置SqlSessionFactoryBean

需要xml配置的代码:

 /**
* 获取SqlSessionFactoryBean
*
* @return
*/
@Bean
public SqlSessionFactoryBean getSqlSessionFactory(DataSource dataSource){
SqlSessionFactoryBean sqlSessionFactoryBean=new SqlSessionFactoryBean();
//注入数据库连接池
sqlSessionFactoryBean.setDataSource(dataSource);
//配置MyBaties全局配置文件:mybatis-config.xml
sqlSessionFactoryBean.setConfigLocation(new ClassPathResource("mybatis-config.xml"));
//扫描entity包 使用别名
sqlSessionFactoryBean.setTypeAliasesPackage("com.wbg.springJavaConfig.dao");
//扫描sql配置文件:mapper需要的xml文件
sqlSessionFactoryBean.setMapperLocations(new Resource[]{new ClassPathResource("classpath:mapper/*.xml")});
return sqlSessionFactoryBean;
}

不需要xml的方式:

MySqlSessionFactory 类

package com.wbg.springJavaConfig.Mybatis;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.wbg.springJavaConfig.dao.AdminDao;
import com.wbg.springJavaConfig.entity.Admin;
import org.apache.ibatis.datasource.pooled.PooledDataSource;
import org.apache.ibatis.mapping.Environment;
import org.apache.ibatis.session.*;
import org.apache.ibatis.transaction.TransactionFactory;
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory; import javax.sql.DataSource;
import java.beans.PropertyVetoException; public class MySqlSessionFactory { public static SqlSession getopenSession() throws PropertyVetoException {
SqlSessionFactory sqlSessionFactory=getSqlSessionFactory(getC3p0DataSource());
sqlSessionFactory.openSession();
SqlSession sqlSession=null;
try {
//打开SqlSession会话
sqlSession = sqlSessionFactory.openSession();
sqlSession.commit();//提交事务
}catch (Exception ex){
sqlSession.rollback();//回滚
}
return sqlSession;
} public static DataSource getC3p0DataSource() throws PropertyVetoException {
ComboPooledDataSource dataSource=new ComboPooledDataSource();
dataSource.setDriverClass("org.mariadb.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mariadb://localhost:3306/wbg_logistics");
dataSource.setUser("root");
dataSource.setPassword("123456");
dataSource.setMaxPoolSize(30);
return dataSource;
} public static SqlSessionFactory getSqlSessionFactory(DataSource dataSource){ TransactionFactory transactionFactory = new JdbcTransactionFactory();
Environment environment = new Environment("development", transactionFactory, dataSource);
//创建Configuration对象
org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration(environment);
//注册一个MyBatis上下文别名
configuration.getTypeAliasRegistry().registerAlias("admin", Admin.class);
//加入一个映射器
configuration.addMapper(AdminDao.class);
//使用SqlSessionFactoryBuilder构建SqlSessionFactory
//构建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration); return sqlSessionFactory;
} }

进行使用:

1、修改AdminDao首先使用@Select注解

  @Select("select * from Admin")
List<Admin> listAll();

2、加入配置

 SqlSession sqlSession = new MySqlSessionFactory().getopenSession();

    public AdminServiceImpl() throws PropertyVetoException {
}
public List<Admin> listAll() {
AdminDao adminDao = sqlSession.getMapper(AdminDao.class);
return adminDao.listAll();
}

调用:

 AdminServiceImpl adminService = new AdminServiceImpl();

        List<Admin> list=adminService.listAll();
for (Admin admin : list) {
System.out.println(admin);
}

运行:

两种方式(xml+代码)构建SqlSessionFactory+完整实现的更多相关文章

  1. Spring IOC 依赖注入的两种方式XML和注解

    依赖注入的原理 依赖注入的方式---XML配置 依赖注入的方式---注解的方式 Spring 它的核心就是IOC和AOP.而IOC中实现Bean注入的实现方式之一就是DI(依赖注入). 一 DI的原理 ...

  2. 基于aspectj实现AOP操作的两种方式——xml配置

    1. 要导入的 jar 包: 常用的aspectj表达式: 权限修饰符可以省略,以下表示:返回值类型为任意,com.chy.service包以及其子包下的.任意类的.参数任意的.任意方法 execut ...

  3. VMware虚拟机直连物理网络的两种方式

    VMware虚拟机直连物理网络的两种方式   使用VMware构建虚拟机,通常虚拟机都使用NAT模式.这时,虚拟机有独立的网段.使用NAT模式,虚拟机之间数据都通过虚拟网络传输,不会影响实体机所在的实 ...

  4. 将Eclipse代码导入到AndroidStudio的两种方式

    版权声明: 欢迎转载,但请保留文章原始出处 作者:GavinCT 出处:http://www.cnblogs.com/ct2011/p/4183553.html 说到使用AndroidStudio,除 ...

  5. XFire构建服务端Service的两种方式(转)

    XFire构建服务端service的两种方式,一是用xfire构建,二是和spring集成构建. 一,xifre构建,确保把xfire的jar包导入到工程中或classpath. 1,service的 ...

  6. 将Eclipse代码导入到Android Studio的两种方式

    转: http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0104/2259.html 说到使用Android Studio,除了新建 ...

  7. 转: 将Eclipse代码导入到AndroidStudio的两种方式 ,测试了方法2,成功。

    蛋疼,不知道为什么我的eclipse的logcat总是莫名其妙的显示一堆黄色字体的字,看不懂的那种,如下图: 然后查了一下资料,说可能是adt版本太低,手机系统太高. 然后本来想升级adt,但是各种折 ...

  8. 转: 将Eclipse代码导入到AndroidStudio的两种方式

    评注: 讲解的非常之详细 转自:    http://www.cnblogs.com/ct2011/p/4183553.html 说到使用AndroidStudio,除了新建的项目,我们都会面临的问题 ...

  9. 简介C#读取XML的两种方式

    简介C#读取XML的两种方式 作者: 字体:[增加 减小] 类型:转载 时间:2013-03-03 在程序中访问进而操作XML文件一般有两种模型,分别是使用DOM(文档对象模型)和流模型,使用DOM的 ...

随机推荐

  1. Cheatsheet: 2017 03.01 ~ 03.31

    Web New Year, New Blog Day 10 - Using JetBrains Rider with a .NET Core Console Application JavaScrip ...

  2. JAVA数据类型中的char类型

    1.JAVA中,char占2字节,16位.可在存放汉字 2.char赋值 char a='a'; //任意单个字符,加单引号. char a='中';//任意单个中文字,加单引号. char a=11 ...

  3. linux系统下部署项目

    一.修改防火墙设置,开放对应的端口 修改Linux系统防火墙配置需要修改 /etc/sysconfig/iptables 这个文件,如果要开放哪个端口,在里面添加一条  -A RH-Firewall- ...

  4. 封装hiredis——C++与redis对接(一)(string的SET与GET操作)

    在菜鸟教程自学了redis,总想着像Mysql一样,在C/C++中进行对接.于是查询了一些资料,最后找到了hiredis.然而直接用它的话,难免有点不方便.于是,对其进行封装. hiredis直接去g ...

  5. 比较全的css重设

    一.最简化的CSS Reset(重设) : * { padding:; margin:; } 这是最普遍最简单的CSS重设,将所有元素的padding和margin值都设为0,可以避免一些浏览器在理解 ...

  6. Bzoj1496: [NOI2006]千年虫

    题面 传送门 Sol 左右可以分开搞 然后就是要形成一个类似梳子的东西 设\(f[0/1][i][j]\) \(0\)凹,\(1\)凸,\(i\)为行,可以滚一维,\(j\)为该行长度 \(f[0][ ...

  7. html发展史简介(摘抄)

    1993年,IETF,Internet工程任务组(Internet Engineering Task Force)的简写.IETF又叫互联网工程任务组,成立于1985年底,是全球互联网最具权威的技术标 ...

  8. Android ImageButton单击切换按钮图片效果

    正常状态的效果: 按钮按下的效果图片: 一.在java中为图片按钮增加触摸监听的函数来实现图片切换,代码如下: ImageButton btn = (ImageButton)findViewById( ...

  9. 使用SDL2出现 “error LNK2019: 无法解析的外部符号 _SDL_main,该符号在函数 _main 中被引用” 时的可能错误记录

    这几天在使用SDL2,之前一直都没有错,直到上午把项目搬了个地方.结果一直出现 “error LNK2019: 无法解析的外部符号 _SDL_main,该符号在函数 _main 中被引用” . 看了网 ...

  10. undo表空间不足,ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS2'

    故障现象:UNDO表空间越来越大,长此下去最终数据因为磁盘空间不足而崩溃: 问题分析:本问题在ORACLE系统管理中属于比较正常的一现象,产生问题的原因主要以下两点: 1. 有较大的事务量让Oracl ...