1.项目结构
开发工具:IDEA + Maven
项目结构图:
项目结构图
2.配置
2.1.Maven配置
添加Maven配置文件pom.xml,增加Mysql、Mybatis和Log4j2依赖包
<?xml version="1.0"?> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">4.0.0org.poiuymybatis-intro1.0-SNAPSHOTmybatis-intro-mybatiswarmybatis-intro-mybatis Maven Webapphttp://maven.apache.orgorg.mybatismybatis3.5.6org.apache.logging.log4jlog4j-core2.12.1mysqlmysql-connector-java8.0.22mybatis-intro-mybatis
|
2.2.Mybatis配置文件
Mybatis配置文件mybatis_config.xml,添加数据库和Mapper文件配置
<?xml version="1.0" encoding="UTF-8"?> br />"http://mybatis.org/dtd/mybatis-3-config.dtd">
|
2.3.Log4J2配置
添加Log4J2配置文件
<?xml version="1.0" encoding="UTF-8" ?> filePattern="logs/$${date:yyyy-MM}/web-%d{MM-dd-yyyy}-%i.log.gz">
|
3.DAO层开发
DAO层包括Mapper接口和Mapper配置文件
Mapper接口中声明方法
package org.poiuy.mybatis.intro.dao; import org.poiuy.mybatis.intro.domain.MybatisUser; public interface MybatisUserMapper { //添加 public int insert(MybatisUser user); //删除 public int delete(int id); //查找 public MybatisUser select(int id); //更新 public int update (MybatisUser user); }
|
配置文件中进行方法实现
<?xml version="1.0" encoding="UTF-8"?> br /> "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> INSERT INTO mybatis_user (username,secure,age,brith,email) VALUE (#{username},#{secure},#{age},#{brith},#{email}) DELETE FROM mybatis_user WHERE id = #{id} SELECT id,username,secure,age,brith,email FROM mybatis_user WHERE id = #{id} UPDATE mybatis_user SET username = #{username} , secure = #{secure} , brith = #{brith} , age = #{age} , email = #{email} WHERE id = #{id}
|
4.Domain层开发
添加实体类对应数据库表结构
package org.poiuy.mybatis.intro.domain; import java.time.LocalDate; public class MybatisUser { private int id; private String username; private String secure; private int age; private LocalDate brith; private String email; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getSecure() { return secure; } public void setSecure(String secure) { this.secure = secure; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public LocalDate getBrith() { return brith; } public void setBrith(LocalDate brith) { this.brith = brith; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } @Override public String toString() { return "MybatisUser{" + "id=" + id + ", username='" + username + '\'' + ", secret='" + secure + '\'' + ", age=" + age + ", brith=" + brith + ", email='" + email + '\'' + '}'; } }
|
5.Mybatis开发
使用Resources加载配置文件
创建SqlSessionFactoryBuilder对象
使用SqlSessionFactoryBuilder创建SqlSessionFactory
使用SqlSessionFactory创建SqlSession
使用SqlSession创建Mapper并调用方法
整个开发步骤如下:Mybatis的Mapper开发版本和SqlSession开发流程基本一致;只是在执行Mapper方法的时候,这里先创建对应的Mapper对象,然后调用对象的方法来执行;而SqlSession是直接调用执行方法来执行,方法通过Mapper配置文件中的namespace和id来确定。
因为Mapper中使用接口编程,且如果SqlSession版本如果方法参数有误也必能在编译器提示出来;开发过程中推荐使用Mapper版本
package org.poiuy.mybatis.intro; import java.io.IOException; import java.time.LocalDate; 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 org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.poiuy.mybatis.intro.dao.MybatisUserMapper; import org.poiuy.mybatis.intro.domain.MybatisUser; public class Application { private static final Logger logger = LogManager.getLogger(Application.class); public static void main(String[] args) { SqlSession session = null; try { String resource = "mybatis/mybatis_config.xml"; SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream(resource)); //获取session时设置commit方式 session = factory.openSession(); MybatisUserMapper mybatisUserMapper = session.getMapper(MybatisUserMapper.class); MybatisUser user = new MybatisUser(); user.setAge(30); user.setBrith(LocalDate.of(1991,03,22)); user.setSecure("ABCDERGENSDGSU"); user.setUsername("张四"); user.setEmail("zhangsi@qq.com"); mybatisUserMapper.insert(user); user = mybatisUserMapper.select(3); logger.trace(user); if(user != null){ user.setEmail("jll@poi.com"); mybatisUserMapper.update(user); } mybatisUserMapper.delete(14); session.commit(); } catch (IOException e) { e.printStackTrace(); } finally { if(session != null) { session.close(); } } } }
|