mybatis环境准备
- 加入所需jar包 工程结构
所需jar包,博主有上传资源
在开始之前我们有必要了解mybatis执行流程:
①SqlMapConfig.xml(是mybatis的全局配置文件,名称不固定的)配置了数据源、事务等mybatis运行环境、配置映射文件(配置sql语句) mapper.xml(映射文件)、mapper.xml、mapper.xml.....
②SqlSessionFactory(会话工厂),根据配置文件创建工厂 作用:创建SqlSession
③SqlSession(会话),是一个接口,面向用户(程序员)的接口 作用:操作数据库(发出sql增、删、改、查)
④Executor(执行器),是一个接口(基本执行器、缓存执行器) 作用:SqlSession内部通过执行器操作数据库
⑤mapped statement(底层封装对象) 作用:对操作数据库存储封装,包括 sql语句,输入参数、输出结果类型
SqlMapConfig.xml
db.properties
jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8jdbc.username=rootjdbc.password=111111
log4j.properties
# Global logging configurationlog4j.rootLogger=DEBUG, stdout# MyBatis logging configuration...log4j.logger.org.mybatis.example.BlogMapper=TRACE# Console output...log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
mybatis开发dao
- 开发原始dao的方法 ①dao接口
public interface UserDao { //根据id查询用户信息 public User findUserById(int id) throws Exception;}
②dao接口实现类
public class UserDaoImpl implements UserDao{ //需要向dao实现类中SqlSessionFactory //通过构造函数注入 private SqlSessionFactory sqlSessionFactory; public UserDaoImpl(SqlSessionFactory sqlSessionFactory){ this.sqlSessionFactory = sqlSessionFactory; } @Override public User findUserById(int id) throws Exception { SqlSession sqlSession = sqlSessionFactory.openSession(); User user = sqlSession.selectOne("test.findUserById", id); sqlSession.close(); return user; }}
③测试代码
public class UserDaoImplTest { //创建sqlSessionFactory private SqlSessionFactory sqlSessionFactory; @Before public void setUp() throws Exception{ //加载mybatis配置文件 String resource = "SqlMapConfig.xml"; //得到配置文件流 InputStream inputStream = Resources.getResourceAsStream(resource); //创建会话工厂,传入mybatis的配置文件信息 sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } @Test public void testFindUserById() throws Exception { //创建UserDao的对象 UserDao userDao = new UserDaoImpl(sqlSessionFactory); //调用UserDao的方法,并打印 System.out.println(userDao.findUserById(1)); }}
测试结果
- mapper代理方法 ①mapper.java
public interface UserMapper { public User findUserById(int id) throws Exception;}
②mapper.xml
③在SqlMapConfig.xml文件加载mapper.xml
④测试代码
public class UserMapperTest { private SqlSessionFactory sqlSessionFactory; @Before public void setUp() throws Exception{ String resource = "SqlMapConfig.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } @Test public void testFindUserById() throws Exception { SqlSession sqlSession = sqlSessionFactory.openSession(); //创建UserMapper对象,mybatis自动生成mapper代理对象 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); User user = userMapper.findUserById(1); sqlSession.close(); System.out.println(user); }}
如果mapper方法返回单个pojo对象(非集合对象),代理对象内部通过selectOne查询数据库。 如果mapper方法返回集合对象,代理对象内部通过selectList查询数据库。
总结
在此博客中,只介绍了mybatis最简单的使用方法,适合初学者快速入门,但是想要深入了解mybatis,还需要大家一起努力(推荐看一些mybatis的培训视频)。