三.一 导入jar包
需要导入 mybatis 的jar包, mybatis 的关联包, 和mysql驱动 的jar包。
三.二 创建User.java 简单类
package com.yjl.pojo; /** @author:yuejl @date: 2019年6月15日 上午11:11:02 @Description Mybatis 使用的基本类 User */ public class User { /** * @param id id编号,自增 * @param name 姓名 * @param age 年龄 * @param sex 性别 * @param description 描述 */ private Integer id; private String name; private Integer age; private String sex; private String description; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } @Override public String toString() { return "User [id=" + id + ", name=" + name + ", age=" + age + ", sex=" + sex + ", description=" + description + "]"; } }
三.三 创建UserDao 接口和UserDaoImpl 实现类
UserDao 接口:
package com.yjl.dao; import java.util.List; import com.yjl.pojo.User; /** @author:yuejl @date: 2019年6月15日 上午11:26:23 @Description 类的相关描述 */ public interface UserDao { User getById(int id); List<User> findAll(); }
UserDaoImpl 实现类:
package com.yjl.dao.impl; import java.util.List; import org.apache.ibatis.session.SqlSession; import com.yjl.dao.UserDao; import com.yjl.pojo.User; import com.yjl.util.SqlSessionFactoryUtils; /** @author:yuejl @date: 2019年6月15日 上午11:26:36 @Description 类的相关描述 */ public class UserDaoImpl implements UserDao{ @Override public User getById(int id) { return null; } @Override public List<User> findAll() { return null; } }
三.四 创建测试类
package com.yjl.test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import org.junit.Test; import com.yjl.dao.UserDao; import com.yjl.dao.impl.UserDaoImpl; import com.yjl.pojo.User; import com.yjl.util.DBUtils; /** @author:yuejl @date: 2019年6月15日 上午11:14:56 @Description 类的相关描述 */ public class UserTest { @Test public void getByIdTest(){ UserDao userDao=new UserDaoImpl(); User user=userDao.getById(1); System.out.println(user); } @Test public void findAllTest(){ UserDao userDao=new UserDaoImpl(); List<User> allList=userDao.findAll(); allList.forEach(n ->System.out.println(n)); } }
三.五 MyBatis 的核心配置文件 SqlMapConfig.xml
在src 目录下,创建 SqlMapConfig.xml 文件
<?xml version="1.0" encoding="UTF-8"?> <!-- 引入约束 --> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 开发环境 development --> <environments default="development"> <environment id="development"> <!-- 事务管理 --> <transactionManager type="JDBC"></transactionManager> <!-- 数据源 ,为pooled 连接池 --> <dataSource type="pooled"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf8"/> <property name="username" value="root"/> <property name="password" value="abc123"/> </dataSource> </environment> </environments> <mappers> <!-- 引入文件资源 --> <mapper resource="com/yjl/pojo/User.xml"/> </mappers> </configuration>
三.六 MyBatis 的工具类 SqlSessionFactoryUtils ,用于获取SqlSession
package com.yjl.util; import java.io.IOException; import java.io.InputStream; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; /** @author:两个蝴蝶飞 @date: 2019年6月15日 上午11:13:26 @Description 类的相关描述 */ public class SqlSessionFactoryUtils { /*创建SqlSession的工厂 SqlSessionFactory对象*/ private static SqlSessionFactory sqlSessionFactory=null; private SqlSessionFactoryUtils(){ } /** * 单例模式 获取实例 * @author 两个蝴蝶飞 * @return */ public static SqlSessionFactory getInstance(){ synchronized(SqlSessionFactoryUtils.class){ if(sqlSessionFactory==null){ InputStream input=null; // Mybatis 核心配置文件名 String resource_name="SqlMapConfig.xml"; try { input=Resources.getResourceAsStream(resource_name); sqlSessionFactory=new SqlSessionFactoryBuilder().build(input); } catch (IOException e) { e.printStackTrace(); } } } return sqlSessionFactory; } /** * * @author 两个蝴蝶飞 * @return 获取当前的Session */ public static SqlSession getSession(){ if(sqlSessionFactory==null){ getInstance(); } return sqlSessionFactory.openSession(); } }
三.七 MyBatis 的实体配置文件 User.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--设置工作区间--> <mapper namespace="com.yjl.pojo.User"> <select id="getById" parameterType="int" resultType="com.yjl.pojo.User"> <!--正常的sql 语句。 --> select * from user where id=#{id} </select> <select id="findAll" resultType="com.yjl.pojo.User"> select * from user </select> </mapper>
三.八 引入log4j.properties 日志文件
### direct log messages to stdout ### log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n ### direct messages to file hibernate.log ### #log4j.appender.file=org.apache.log4j.FileAppender #log4j.appender.file.File=hibernate.log #log4j.appender.file.layout=org.apache.log4j.PatternLayout #log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n ## 配置mybatis 的日志级别为debug log4j.logger.org.mybatis=debug ### set log levels - for more verbose logging change 'info' to 'debug' ### log4j.rootLogger=debug, stdout
配置完成后的,目录结构如下:
三.九 UserDaoImpl 类的 getById() 方法实现
@Override public User getById(int id) { //调用selectOne 方法,进行查询。 第一个传入的是id 值,为User.xml 的 namespace+id 的值。 SqlSession sqlSession=SqlSessionFactoryUtils.getSession(); User user=null; try{ user=sqlSession.selectOne("com.yjl.pojo.User.getById",userId); }finally{ sqlSession.close(); } return user; }
三.十 UserDaoImpl 类的findAll() 方法实现
@Override public List<User> findAll() { SqlSession sqlSession=SqlSessionFactoryUtils.getSession(); List<User> allList=new ArrayList<User>(); try{ allList=sqlSession.selectList("com.yjl.pojo.User.findAll"); }finally{ sqlSession.close(); } return allList; }
四. 测试方法
四.一 测试getById() 方法
观察log4j 日志输出。
- 打开jdbc 连接
- 创建连接
- 设置自动提交 为false.
- 查询sql 语句
- 传参数 1
- 查询记录,为1 条。
四.二 测试findAll() 方法
谢谢!!!