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

  1. entity包下Admin类:
  1. package com.wbg.springJavaConfig.entity;
  2.  
  3. public class Admin {
  4. private int aId;
  5. private String aAccount;
  6. private String aPassword;
  7. private String aRank;
  8.  
  9. public Admin(int aId, String aAccount, String aPassword, String aRank) {
  10. this.aId = aId;
  11. this.aAccount = aAccount;
  12. this.aPassword = aPassword;
  13. this.aRank = aRank;
  14. }
  15.  
  16. public int getaId() {
  17. return aId;
  18. }
  19.  
  20. public void setaId(int aId) {
  21. this.aId = aId;
  22. }
  23.  
  24. public String getaAccount() {
  25. return aAccount;
  26. }
  27.  
  28. public void setaAccount(String aAccount) {
  29. this.aAccount = aAccount;
  30. }
  31.  
  32. public String getaPassword() {
  33. return aPassword;
  34. }
  35.  
  36. public void setaPassword(String aPassword) {
  37. this.aPassword = aPassword;
  38. }
  39.  
  40. public String getaRank() {
  41. return aRank;
  42. }
  43.  
  44. public void setaRank(String aRank) {
  45. this.aRank = aRank;
  46. }
  47.  
  48. @Override
  49. public String toString() {
  50. return "Admin{" +
  51. "aId=" + aId +
  52. ", aAccount='" + aAccount + '\'' +
  53. ", aPassword='" + aPassword + '\'' +
  54. ", aRank='" + aRank + '\'' +
  55. '}';
  56. }
  57. }

 dao包下的AdminDao接口

  1. public interface AdminDao {
  2.  
  3. List<Admin> listAll();
  4. Admin getById(int aId);
  5. }

service包下AdminService

  1. public interface AdminService {
  2. List<Admin> listAll();
  3.  
  4. Admin getById(int aId);
  5. }

impl包下AdminServiceImpl

  1. public class AdminServiceImpl implements AdminService {
  2.  
  3. @Override
  4. public List<Admin> listAll() {
  5. return null;
  6. }
  7.  
  8. @Override
  9. public Admin getById(int aId) {
  10. return null;
  11. }
  12. }

一、使用xml构建SqlSessionFactory

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

二、使用代码构建SqlSessionFactory

第一步:配置DataSource

有三种方式,推荐使用C3p0

  1. /**
  2. * C3p0的连接池
  3. * @return
  4. * @throws PropertyVetoException
  5. */
  6. @Bean
  7. public DataSource getC3p0DataSource() throws PropertyVetoException {
  8. ComboPooledDataSource dataSource=new ComboPooledDataSource();
  9. dataSource.setDriverClass("org.mariadb.jdbc.Driver");
  10. dataSource.setJdbcUrl("jdbc:mariadb://localhost:3306/wbg_logistics");
  11. dataSource.setUser("root");
  12. dataSource.setPassword("123456");
  13. dataSource.setMaxPoolSize(30);
  14. return dataSource;
  15. }
  16. /**
  17. * MyBatis的连接池
  18. * @return
  19. */
  20. //@Bean
  21. public DataSource getMyBatisDataSource(){
  22. //数据库连接池
  23. PooledDataSource dataSource = new PooledDataSource();
  24. //设驱动
  25. dataSource.setDriver("org.mariadb.jdbc.Driver");
  26. //用户名
  27. dataSource.setUsername("root");
  28. //密码
  29. dataSource.setPassword("123456");
  30. //数据库连接
  31. dataSource.setUrl("jdbc:mariadb://localhost:3306/wbg_logistics");
  32. dataSource.setDefaultAutoCommit(false);
  33. return dataSource;
  34. }
  35. /**
  36. * Spring自带的SimpleDriverDataSource
  37. * @return
  38. */
  39. //@Bean
  40. public DataSource getSimpleDriverDataSource(){
  41. SimpleDriverDataSource dataSource=new SimpleDriverDataSource();
  42. return dataSource;
  43. }

第二步:配置SqlSessionFactoryBean

需要xml配置的代码:

  1. /**
  2. * 获取SqlSessionFactoryBean
  3. *
  4. * @return
  5. */
  6. @Bean
  7. public SqlSessionFactoryBean getSqlSessionFactory(DataSource dataSource){
  8. SqlSessionFactoryBean sqlSessionFactoryBean=new SqlSessionFactoryBean();
  9. //注入数据库连接池
  10. sqlSessionFactoryBean.setDataSource(dataSource);
  11. //配置MyBaties全局配置文件:mybatis-config.xml
  12. sqlSessionFactoryBean.setConfigLocation(new ClassPathResource("mybatis-config.xml"));
  13. //扫描entity包 使用别名
  14. sqlSessionFactoryBean.setTypeAliasesPackage("com.wbg.springJavaConfig.dao");
  15. //扫描sql配置文件:mapper需要的xml文件
  16. sqlSessionFactoryBean.setMapperLocations(new Resource[]{new ClassPathResource("classpath:mapper/*.xml")});
  17. return sqlSessionFactoryBean;
  18. }

不需要xml的方式:

MySqlSessionFactory 类

  1. package com.wbg.springJavaConfig.Mybatis;
  2.  
  3. import com.mchange.v2.c3p0.ComboPooledDataSource;
  4. import com.wbg.springJavaConfig.dao.AdminDao;
  5. import com.wbg.springJavaConfig.entity.Admin;
  6. import org.apache.ibatis.datasource.pooled.PooledDataSource;
  7. import org.apache.ibatis.mapping.Environment;
  8. import org.apache.ibatis.session.*;
  9. import org.apache.ibatis.transaction.TransactionFactory;
  10. import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
  11.  
  12. import javax.sql.DataSource;
  13. import java.beans.PropertyVetoException;
  14.  
  15. public class MySqlSessionFactory {
  16.  
  17. public static SqlSession getopenSession() throws PropertyVetoException {
  18. SqlSessionFactory sqlSessionFactory=getSqlSessionFactory(getC3p0DataSource());
  19. sqlSessionFactory.openSession();
  20. SqlSession sqlSession=null;
  21. try {
  22. //打开SqlSession会话
  23. sqlSession = sqlSessionFactory.openSession();
  24. sqlSession.commit();//提交事务
  25. }catch (Exception ex){
  26. sqlSession.rollback();//回滚
  27. }
  28. return sqlSession;
  29. }
  30.  
  31. public static DataSource getC3p0DataSource() throws PropertyVetoException {
  32. ComboPooledDataSource dataSource=new ComboPooledDataSource();
  33. dataSource.setDriverClass("org.mariadb.jdbc.Driver");
  34. dataSource.setJdbcUrl("jdbc:mariadb://localhost:3306/wbg_logistics");
  35. dataSource.setUser("root");
  36. dataSource.setPassword("123456");
  37. dataSource.setMaxPoolSize(30);
  38. return dataSource;
  39. }
  40.  
  41. public static SqlSessionFactory getSqlSessionFactory(DataSource dataSource){
  42.  
  43. TransactionFactory transactionFactory = new JdbcTransactionFactory();
  44. Environment environment = new Environment("development", transactionFactory, dataSource);
  45. //创建Configuration对象
  46. org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration(environment);
  47. //注册一个MyBatis上下文别名
  48. configuration.getTypeAliasRegistry().registerAlias("admin", Admin.class);
  49. //加入一个映射器
  50. configuration.addMapper(AdminDao.class);
  51. //使用SqlSessionFactoryBuilder构建SqlSessionFactory
  52. //构建SqlSessionFactory
  53. SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
  54.  
  55. return sqlSessionFactory;
  56. }
  57.  
  58. }

进行使用:

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

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

2、加入配置

  1. SqlSession sqlSession = new MySqlSessionFactory().getopenSession();
  2.  
  3. public AdminServiceImpl() throws PropertyVetoException {
  4. }
  5. public List<Admin> listAll() {
  6. AdminDao adminDao = sqlSession.getMapper(AdminDao.class);
  7. return adminDao.listAll();
  8. }

调用:

  1. AdminServiceImpl adminService = new AdminServiceImpl();
  2.  
  3. List<Admin> list=adminService.listAll();
  4. for (Admin admin : list) {
  5. System.out.println(admin);
  6. }

运行:

两种方式(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. linux修改用户名和密码

    linux修改用户名和密码 修改root密码:sudo passwd root 修改用户密码(如hadoop) sudo passwd hadoop 修改主机名:sudo vi /etc/hostna ...

  2. mac os下载安装jmeter

    一.简介 jmeter是属于apache的一个开源产品,纯Java应用.最初用来进行功能测试,而后又扩展了更多的测试功能. 二.下载 进入apache的jmeter下载页:http://jmeter. ...

  3. equals()重写

    ** 注意 ** 1.重写equals方法修饰符必须是public,因为是重写的Object的方法. 2.参数类型必须是Object. 3.重写equals方法后最好重写hashCode方法,否则两个 ...

  4. Java泛型拾遗

    先上百度百科的解释 泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数.这种参数类型可以用在类.接口和方法的创建中,分别称为泛型类.泛型接口.泛型方 ...

  5. PHP+Xdebug实现远程调试

    以前以为php调试时服务器端和IDE必须在同一台机子上,无意发现xdebug其实是支持远程调试的. 尝试之后发现可以配置成功,还是可以调试代码的感觉爽啊!   php所在Ubuntu服务器       ...

  6. 【转】mouseover和mouseenter的区别

    一.当绑定着两个事件的元素里面没有子元素的时候,这两个事件的触发效果是一致的: x=0; y=0; $(document).ready(function(){ $("div.over&quo ...

  7. js中map和python中的map

    js 中的map: 由于map()方法定义在JavaScript的Array中,我们调用Array的map()方法,传入我们自己的函数,就得到了一个新的Array作为结果: function pow( ...

  8. js-js和HTML的两种结合方式

    第一种: - 使用一个标签 <script type="text/javascript"> js代码; </script> 第二种: - 使用script标 ...

  9. jquery not() 方法

    1.not(expression) 根据表达式参数的值,从包装集里删除元素 example : $('img[alt]').not('[alt*=joy]') 返回包含属性alt的img元素,但img ...

  10. 10.31NOIP模拟赛解题报告

    心路历程 预计得分:\(100 +100 +80\) 实际得分:\(30 + 100 + 80\) 天天挂分..感觉我noip要凉.. T1不难,但是太坑了 T2不难 T3不难,但是在小机房考试脑子都 ...