mybatis之session管理

SqlSessionFactoryBuilder

一旦使用SqlSessionFactoryBuilder对象创建SqlSessionFactory后,SqlSessionFactoryBuilder类就不需要存在了,也就是,不需要保持对象的状态,可以随意的由jvm销毁。

SqlSessionFactory

SqlSessionFactory对象是由SqlSessionFactoryBuilder创建。一旦创建SqlSessionFactory类的实例,该实例应该在应用程序执行期间都存在,不需要每一次操作数据库时都创建,所以其最佳实践方式就是单例模式。

SqlSession

SqlSession对象由SqlSessionFactory类创建,需要注意的是,每个线程都应该有它自己的SqlSession实例。SqlSession的实例不能共享,是线程不安全的,在操作对象的时候必须要保持其线程安全。

必须保证的最重要的事情是你要关闭所打开的任何 session。

SqlSession session = sqlSessionFactory.openSession();
try {
    // following 3 lines pseudocod for "doing some work"
    session.insert(...);
    session.update(...);
    session.delete(...);
    session.commit();
} finally {
    session.close();
}

Log4J

添加日志的步骤如下:

1.添加依赖

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

2.conf.xml中添加setting

<setting name="logImpl" value="LOG4J"/></settings>

3.在resources文件夹中新建log4j.properties文件并添加如下配置

######################## 将等级为DEBUG的日志信息输出到console和file两个目的地, console和file的定义在下面的代码
log4j.rootLogger=DEBUG,console,file

########################控制台输出的相关设置
log4j.appender.console = org.apache.log4j.ConsoleAppender
#在控制台输出
log4j.appender.console.Target = System.out
#在DEBUG级别输出
log4j.appender.console.Threshold = DEBUG
log4j.appender.console.layout = org.apache.log4j.PatternLayout
#日志格式
log4j.appender.console.layout.ConversionPattern=[%c]-%m%n

######################日志输出级别
log4j.logger.org.mybatis=DEBUG
log4j.logger.java.sql=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis是一个开源的持久层框架,它可以帮助我们简化数据库操作的代码。下面是一个简单的MyBatis员工管理系统的代码示例: 1. 创建数据库表: ```sql CREATE TABLE employee ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50), age INT, department VARCHAR(50) ); ``` 2. 创建Employee实体类: ```java public class Employee { private int id; private String name; private int age; private String department; // 省略构造方法、getter和setter方法 } ``` 3. 创建Mapper接口: ```java public interface EmployeeMapper { void addEmployee(Employee employee); void updateEmployee(Employee employee); void deleteEmployee(int id); Employee getEmployeeById(int id); List<Employee> getAllEmployees(); } ``` 4. 创建Mapper XML文件: ```xml <!-- EmployeeMapper.xml --> <mapper namespace="com.example.mapper.EmployeeMapper"> <insert id="addEmployee" parameterType="com.example.entity.Employee"> INSERT INTO employee (name, age, department) VALUES (#{name}, #{age}, #{department}) </insert> <update id="updateEmployee" parameterType="com.example.entity.Employee"> UPDATE employee SET name = #{name}, age = #{age}, department = #{department} WHERE id = #{id} </update> <delete id="deleteEmployee" parameterType="int"> DELETE FROM employee WHERE id = #{id} </delete> <select id="getEmployeeById" parameterType="int" resultType="com.example.entity.Employee"> SELECT * FROM employee WHERE id = #{id} </select> <select id="getAllEmployees" resultType="com.example.entity.Employee"> SELECT * FROM employee </select> </mapper> ``` 5. 创建MyBatis配置文件: ```xml <!-- mybatis-config.xml --> <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis_example"/> <property name="username" value="root"/> <property name="password" value="password"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/example/mapper/EmployeeMapper.xml"/> </mappers> </configuration> ``` 6. 使用MyBatis进行数据库操作: ```java public class Main { public static void main(String[] args) { String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); try (SqlSession session = sqlSessionFactory.openSession()) { EmployeeMapper employeeMapper = session.getMapper(EmployeeMapper.class); // 添加员工 Employee employee = new Employee(); employee.setName("张三"); employee.setAge(25); employee.setDepartment("技术部"); employeeMapper.addEmployee(employee); // 更新员工信息 employee.setName("李四"); employee.setAge(30); employee.setDepartment("人事部"); employeeMapper.updateEmployee(employee); // 删除员工 employeeMapper.deleteEmployee(employee.getId()); // 查询员工 Employee retrievedEmployee = employeeMapper.getEmployeeById(1); System.out.println(retrievedEmployee); // 查询所有员工 List<Employee> employees = employeeMapper.getAllEmployees(); System.out.println(employees); } } } ``` 以上是一个简单的MyBatis员工管理系统的代码示例,通过使用MyBatis框架,我们可以更方便地进行数据库操作。如果你有任何问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值