1.通过官网了解sql会议工厂不使用xml文件配置。
使用配置类,比配置文件更加简洁。
2.新建一个类UserDataSourceFactory
package net.jyq.mybatis.datasource;
import org.apache.ibatis.datasource.pooled.PooledDataSource;
import javax.sql.DataSource;
/**
*功能:用户数据源工厂
**/
public class UserDataSourceFactory {
public static DataSource getUserDataSource(){
return new PooledDataSource("com.mysql.jdbc.Driver",
"jdbc:mysql://localhost:3306/testdb?useSSL=false",
"root","root");
}
}
找到配置文件mybatis-config.xml.找到并复制到数据池中
3.在Mapper文件包中新建TestUser
package net.jyq.mybatis.mapper;
import net.nell.mybatis.bean.User;
import net.nell.mybatis.datasource.UserDataSourceFactory;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.mapping.Environment;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.ibatis.transaction.TransactionFactory;
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import javax.sql.DataSource;
import java.io.IOException;
import java.io.Reader;
import java.util.List;
public class TestUserMapperNew {
private SqlSession sqlSession; // SQL会话
private UserMapper userMapper; // 用户映射器
@Before
public void init() {
//创建数据源
DataSource dataSource= UserDataSourceFactory.getUserDataSource();
//创建事务工厂
TransactionFactory transactionFactory=new JdbcTransactionFactory();
//创建数据库环境
Environment environment = new Environment("development",transactionFactory,dataSource);
// 基于环境配置文件创建配置对象
Configuration configuration = new Configuration(environment);
//添加用户映射器接口
configuration.addMapper(UserMapper.class);
//基于配置对象构建SQL会话工厂
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(configuration);
// 利用SQL会话工厂获取SQL会话
sqlSession = factory.openSession();
// 利用SQL会话获取用户映射器对象
userMapper = sqlSession.getMapper(UserMapper.class);
// 提示用户SQL会话对象创建成功
System.out.println("sqlSession对象已创建。");
}
@Test
public void testFindById() {
int id = 1;
User user = userMapper.findById(id);
if (user != null) {
System.out.println(user);
} else {
System.out.println("编号为[" + id + "]的用户未找到。");
}
}
@Test
public void testFindAll() {
List<User> users = userMapper.findAll();
users.forEach(user -> System.out.println(user));
System.out.println();
for (int i = 0;i < users.size();i++){
System.out.println(users.get(i));
}
System.out.println();
for (User user : users){
System.out.println(user);
}
}
@After
public void destroy() {
// 关闭SQL会话
sqlSession.close();
// 提示用户SQL会话对象关闭
System.out.println("sqlSession对象已关闭。");
}
}
4.在接口修改用户映射器语句
package net.jyq.mybatis.mapper;
import net.nell.mybatis.bean.User;
import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface UserMapper {
@Select("SELECT * FROM t_user WHERE id = #{id}")
User findById(int id);
@Select("SELECT * FROM t_user")
List<User> findAll();
}
查询结果