本文共 5660 字,大约阅读时间需要 18 分钟。
传统的JDBC程序在处理数据库事务时,需要手动管理连接和事务,这种方式容易出现以下问题:
MyBatis是一种基于SQL映射的持久化框架,它的核心思想是通过XML或注解文件定义数据库操作,简化了 JDBC程序的开发流程。其主要优势包括:
本节将通过一个简单的用户信息管理系统,完成以下功能:
MyBatis框架可以通过以下方式获取:
下载完成后,将MyBatis相关JAR包添加到项目中。常用的依赖包包括:
mybatis-spring
:用于整合MyBatis和Springmybatis-annotation
:用于注解风格开发mybatis-dynamic-sql
:用于动态SQL语句项目目录结构应如下:
项目根目录├── src│ ├── main│ │ ├── java│ │ │ └── com│ │ │ └── cy│ │ │ └── po│ │ │ └── User.java│ │ └── resources│ │ ├── config│ │ │ ├── log4j.properties│ │ │ ├── db.properties│ │ │ └── SqlMapConfig.xml│ │ └── sqlmap│ │ └── User.xml├── test│ └── java│ └── com│ └── cy│ └── first│ └── MybatisFirst.java
db.properties
jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/mybatisjdbc.username=rootjdbc.password=root
SqlMapConfig.xml
package com.cy.po;public class User { private int id; private String username; private String sex; private Date birthday; private String address; // setter和getter方法省略...}
SELECT LAST_INSERT_ID() INSERT INTO user(username, birthday, sex, address) VALUES(#{username}, #{birthday}, #{sex}, #{address})DELETE FROM user WHERE id=#{id} UPDATE user SET username=#{username}, birthday=#{birthday}, sex=#{sex}, address=#{address} WHERE id=#{id}
package com.cy.first;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.junit.Test;import com.cy.po.User;public class MybatisFirst { @Test public void findUserByIdTest() throws IOException { String resource = "SqlMapConfig.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession sqlSession = sqlSessionFactory.openSession(); User user = sqlSession.selectOne("test.findUserById", 1); System.out.println(user); sqlSession.close(); } @Test public void findUserByNameTest() throws IOException { String resource = "SqlMapConfig.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession sqlSession = sqlSessionFactory.openSession(); ListuserList = sqlSession.selectList("test.findUserByName", "小明"); System.out.println(userList); sqlSession.close(); } @Test public void insertUserTest() throws IOException { String resource = "SqlMapConfig.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession sqlSession = sqlSessionFactory.openSession(); User user = new User(); user.setUsername("王小军"); user.setBirthday(new Date()); user.setSex("1"); user.setAddress("河南郑州"); sqlSession.insert("test.insertUser", user); sqlSession.commit(); System.out.println("用户ID: " + user.getId()); sqlSession.close(); } @Test public void deleteUserTest() throws IOException { String resource = "SqlMapConfig.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession sqlSession = sqlSessionFactory.openSession(); sqlSession.delete("test.deleteUser", 29); sqlSession.commit(); sqlSession.close(); } @Test public void updateUserTest() throws IOException { String resource = "SqlMapConfig.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession sqlSession = sqlSessionFactory.openSession(); User user = new User(); user.setId(28); user.setUsername("王大军"); user.setBirthday(new Date()); user.setSex("2"); user.setAddress("河南郑州"); sqlSession.update("test.updateUser", user); sqlSession.commit(); sqlSession.close(); }}
INSERT
、SELECT
等语句不需要分号结尾通过以上步骤,可以完成一个基本的MyBatis入门程序开发,熟悉其框架特点和使用方法后,可以进一步探索更复杂的功能,如缓存、动态SQL、事务管理等。
转载地址:http://ruffk.baihongyu.com/