博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于Maven构建Mybatis项目
阅读量:4660 次
发布时间:2019-06-09

本文共 5802 字,大约阅读时间需要 19 分钟。

目录

使用的数据库配置参考笔记-example数据库内容

项目根目录添加porm文件

4.0.0
com.hao.example
MavenMybatis
0.0.1-SNAPSHOT
mysql
mysql-connector-java
5.1.32
org.mybatis
mybatis
3.3.0
org.apache.maven.plugins
maven-compiler-plugin
1.7
1.7
src/main/java
**/*.properties
**/*.xml
false
src/main/resources
**/*.properties
**/*.xml
false

在src/main/resources下创建数据库对应的实体类:Admin,其符合JavaBean的标准

package com.hao.example.po;public class Admin {    private Integer id;    private String username;    private String password;        public Admin() {    }        public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }    @Override    public String toString() {        return "Admin [id=" + id + ", username=" + username + ", password="                + password + "]";    }}

在src/main/java下创建AdminMapper接口,用于操作Admin类

AdminMapper和Hibernate中的AdminDao是一个东西,只不过在Mybatis更习惯称为Mapper

package com.hao.example.mapper;import com.hao.example.po.Admin;public interface AdminMapper {    public Admin getAdmin(Integer id);    public int deleteAdmin(Integer id);    public int insertAdmin(Admin admin);}

在src/main/resources下添加数据库配置文件:db.properties

jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/example?characterEncoding=utf-8jdbc.username=rootjdbc.password=h66666

在src/main/resources下添加mybatis配置文件:mybatis-config.xml

在AdminMapper接口的同一目录下创建AdminMapper.xml文件

AdminMapper.xml相当于AdminMapper接口的实现类,Mybatis框架会利用动态代理技术,将AdminMapper.xml文件转化为AdminMapper接口的实现类,因此要注意,AdminMapper接口中的函数,在AdminMapper.xml文件中都要有对应的标签,以执行相应的SQL语句

insert into admin(username, password) values(#{username}, #{password})
delete from admin where id = #{id}

创建工具类:SqlSessionFactoryUtil类,用于启动Mybatis,获得Mybatis的相关入口

package com.hao.example.utils;import java.io.InputStream;import java.util.logging.Level;import java.util.logging.Logger;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;/** * 创建SqlSessionFactory的工具类,实现为单例模式 * */public class SqlSessionFactoryUtil {        // SqlSessionFactory对象    private static SqlSessionFactory sqlSessionFactory = null;    // 类线程锁    private static final Class
CLASS_LOCK = SqlSessionFactoryUtil.class; /** * 私有化默认构造函数 */ private SqlSessionFactoryUtil() { } /** * 构建SqlSessionFactory * @return */ public static SqlSessionFactory initSqlSessionFactory(){ String resource = "mybatis-config.xml"; InputStream inputStream = null; try { inputStream = Resources.getResourceAsStream(resource); } catch (Exception e) { Logger.getLogger(SqlSessionFactoryUtil.class.getName()).log(Level.SEVERE, null, e); } // 为了避免并发状态下的SqlSessionFactory不唯一,需要添加锁 synchronized(CLASS_LOCK){ if(sqlSessionFactory == null){ sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } } return sqlSessionFactory; } /** * 获得一个新的Session * @return */ public static SqlSession openSession(){ if(sqlSessionFactory == null){ initSqlSessionFactory(); } return sqlSessionFactory.openSession(); } }

执行main函数,测试代码,若能成功运行则构建正确

package com.hao.example.main;import org.apache.ibatis.session.SqlSession;import com.hao.example.mapper.AdminMapper;import com.hao.example.po.Admin;import com.hao.example.utils.SqlSessionFactoryUtil;public class Main {        public static void main(String[] args) throws Exception {                SqlSession sqlSession = null;                try {            sqlSession = SqlSessionFactoryUtil.openSession();            AdminMapper adminMapper = sqlSession.getMapper(AdminMapper.class);                        Admin admin = adminMapper.getAdmin(2);            System.out.println(admin);                        sqlSession.commit();                    } catch (Exception e) {            System.out.println(e);            sqlSession.rollback();        }finally{            if(sqlSession != null){                sqlSession.close();            }        }    }    }

转载于:https://www.cnblogs.com/tommychok/p/9037006.html

你可能感兴趣的文章
引入css的四种方式
查看>>
iOS开发UI篇—transframe属性(形变)
查看>>
LOJ 2537 「PKUWC2018」Minimax
查看>>
使用java中replaceAll方法替换字符串中的反斜杠
查看>>
流量调整和限流技术 【转载】
查看>>
1 线性空间
查看>>
VS不显示最近打开的项目
查看>>
DP(动态规划)
查看>>
chkconfig
查看>>
2.抽取代码(BaseActivity)
查看>>
夏天过去了, 姥爷推荐几套来自smashingmagzine的超棒秋天主题壁纸
查看>>
反射的所有api
查看>>
css 定位及遮罩层小技巧
查看>>
[2017.02.23] Java8 函数式编程
查看>>
sprintf 和strcpy 的差别
查看>>
JS中window.event事件使用详解
查看>>
ES6深入学习记录(一)class方法相关
查看>>
C语言对mysql数据库的操作
查看>>
INNO SETUP 获得命令行参数
查看>>
docker安装部署
查看>>