首先創建類、接口、數據庫:
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); }
運行: