MySqlSessionFactory.java
package factory; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.InputStream; public class MySqlSessionFactory { private static SqlSessionFactory sqlSessionFactory = null; static{ // 初始化创建SqlSessionFactory对象 try { InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml"); // 读取mybatis-config.xml文件 sqlSessionFactory = new SqlSessionFactoryBuilder() .build(inputStream); } catch (Exception e) { e.printStackTrace(); } } public static SqlSession getSqlSession(){ // 获取SqlSession对象的静态方法 return sqlSessionFactory.openSession(); } public static SqlSessionFactory getSqlSessionFactory() { // 获取SqlSessionFactory的静态方法 return sqlSessionFactory; } }
User.java
package domain; /** * CREATE TABLE `tb_user` ( `id` INT(11) PRIMARY KEY AUTO_INCREMENT, `name` VARCHAR(20), `sex` CHAR(2), `age` INT(11) ) COMMENT '用户表'; */ public class User { private Integer id; //用户ID private String name; //用户姓名 private String sex; //用户性别 private Integer age; //用户年龄 public User(String name, String sex, Integer age){ //有参构造器 super(); this.name = name; this.sex = sex; this.age = age; } 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 String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "User [id=" + id + ", name=" + name + ", sex=" + sex + ", age=" + age + "]"; } }
db.properties
driver=com.mysql.jdbc.Driver url=jdbc:mysql://192.168.1.13:3306/mybatis?useSSL=false username=root password=Abcdef@123456
log4j.properties
log4j.rootLogger=ERROR, stdout # 全局的日志配置 log4j.logger.UserMapper=DEBUG # MyBatis的日志配置 log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n # 控制台输出
mybatis-config.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"> <!-- XML 配置文件包含对 MyBatis 系统的核心设置 --> <configuration> <properties resource="db.properties"/> <!-- 指定 MyBatis 所用日志的具体实现 --> <settings> <setting name="logImpl" value="LOG4J"/> </settings> <typeAliases> <typeAlias alias="user" type="pojo.User"/> <!-- 设置别名 --> </typeAliases> <environments default="mysql"> <!-- 环境配置,即连接的数据库。 --> <environment id="mysql"> <transactionManager type="JDBC"/> <!-- 指定事务管理类型,type="JDBC"指直接简单使用了JDBC的提交和回滚设置 --> <dataSource type="POOLED"> <!-- dataSource指数据源配置,POOLED是JDBC连接对象的数据源连接池的实现。 --> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource> </environment> </environments> <mappers> <!-- mappers告诉了MyBatis去哪里找持久化类的映射文件 --> <mapper resource="UserMapper.xml"/> </mappers> </configuration>
UserMapper.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"> <!-- namespace指用户自定义的命名空间。 --> <mapper namespace="UserMapper"> <!-- insert操作, parameterType="user"表示该插入语句需要一个user对象作为参数 useGeneratedKeys="true"表示使用自动增长的主键 --> <insert id="saveUser" parameterType="user" useGeneratedKeys="true" keyProperty="id"> INSERT INTO tb_user(name,sex,age) VALUES(#{name},#{sex},#{age}) </insert> <!-- select操作 parameterType="int"表示该查询语句需要一个int类型的参数 resultType="user"表示返回的是一个user对象 --> <select id="selectUser" parameterType="int" resultType="user"> SELECT * FROM tb_user WHERE id = #{id} </select> <!-- update操作 parameterType="user"表示该更新语句需要一个user对象作为参数--> <update id="modifyUser" parameterType="user"> UPDATE tb_user SET name = #{name},sex = #{sex},age = #{age} WHERE id = #{id} </update> <!-- delete操作 parameterType="int"表示该查询语句需要一个int类型的参数--> <delete id="removeUser" parameterType="int"> DELETE FROM tb_user WHERE id = #{id} </delete> </mapper>
DeleteTest.java
import factory.MySqlSessionFactory; import org.apache.ibatis.session.SqlSession; public class DeleteTest { public static void main(String[] args) throws Exception { SqlSession session = MySqlSessionFactory.getSqlSession(); // 获得Session实例 session.delete("UserMapper.removeUser", 1); // 删除id为1的User对象 session.commit(); // 提交事务 session.close(); // 关闭Session } }
InsertTest.java
import factory.MySqlSessionFactory; import org.apache.ibatis.session.SqlSession; import pojo.User; public class InsertTest { public static void main(String[] args) throws Exception { SqlSession session = MySqlSessionFactory.getSqlSession(); // 获得Session实例 User user = new User("jack", "男", 22); // 创建User对象 session.insert("UserMapper.saveUser", user); // 插入数据 session.commit(); // 提交事务 session.close(); // 关闭Session } }
SelectTest.java
import factory.MySqlSessionFactory; import org.apache.ibatis.session.SqlSession; import pojo.User; public class SelectTest { public static void main(String[] args) throws Exception { SqlSession session = MySqlSessionFactory.getSqlSession(); // 获得Session实例 User user = session.selectOne("UserMapper.selectUser",1); // 根据id查询User对象 System.out.println(user); session.commit(); // 提交事务 session.close(); // 关闭Session } }
UpadeTest.java
import factory.MySqlSessionFactory; import org.apache.ibatis.session.SqlSession; import pojo.User; public class UpadeTest { public static void main(String[] args) throws Exception { SqlSession session = MySqlSessionFactory.getSqlSession(); // 获得Session实例 User user = session.selectOne("UserMapper.selectUser",1); // 根据id查询User对象 user.setName("tom"); user.setAge(25); // 修改User对象的属性值 session.update("UserMapper.modifyUser", user); // 修改User对象 session.commit(); // 提交事务 session.close(); // 关闭Session } }
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>shanghai</groupId> <artifactId>MyBatis</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>6.11</version> <scope>test</scope> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.1</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.45</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.20.1</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.soureEncodng>UTF-8</maven.compiler.soureEncodng> </properties> </project>