使用MyBatis搭建一个访问mysql数据库的简单示例
2023-09-11 14:17:56 时间
MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。
框架整体结构图:
关键代码介绍
1.ICatagoryOperation接口
public interface ICatagoryOperation { void inserteCatagory(Catagory catagory); Catagory getCatagorybyID(int id); }
2.Catagory类
public class Catagory { private int id; private String name; private String description; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } @Override public String toString() { return String.format("id:%d,name:%s,description:%s", id, name, description); } }
3.MyBatisUtils类
public class MyBatisUtils { private static final String CONFIG_PATH = "config/mybatis_config.xml"; /* * 获取数据库访问链接 */ public static SqlSession getSqlSession() { SqlSession session = null; try { InputStream stream = Resources.getResourceAsStream(CONFIG_PATH); // 可以根据配置的相应环境读取相应的数据库环境 // SqlSessionFactory factory = new SqlSessionFactoryBuilder().build( // stream, "development"); SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(stream); session = factory.openSession(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } return session; } /* * 获取数据库访问链接 */ public static void closeSession(SqlSession session) { session.close(); } }
4.CatagoryMapper.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"> <mapper namespace="com.franson.study.interfaces.ICatagoryOperation"> <!-- 此处的resultType就是对应刚刚你在typeAlias节点里面规定的别名 --> <select id="inserteCatagory" parameterType="Catagory"> insert into tb_catagories(name,description) values(#{name},#{description}) </select> <select id="getCatagorybyID" resultType="Catagory" parameterType="java.lang.Integer"> select * from tb_catagories where id=#{id} </select> </mapper>
5.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"> <configuration> <typeAliases> <typeAlias type="com.franson.study.model.Catagory" alias="Catagory" /> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <!-- ?useUnicode=true&characterEncoding=utf8为了支持中文数据的写入 --> <property name="url" value="jdbc:mysql://127.0.0.1:3306/db_catagory?useUnicode=true&characterEncoding=utf8" /> <property name="username" value="root" /> <property name="password" value="123456" /> </dataSource> </environment> </environments> <mappers> <mapper resource="mapper/CatagoryMapper.xml" /> </mappers> </configuration>
6.TestMybatis测试入口类
public class TestMybatis { public static void main(String[] args) { addTest(); getTest(); } /* * 添加Catagory */ static void addTest() { SqlSession sqlSession = MyBatisUtils.getSqlSession(); ICatagoryOperation catagoryOperation = sqlSession.getMapper(ICatagoryOperation.class); Catagory item = new Catagory(); item.setName("sql server"); item.setDescription("sql server类"); int result = catagoryOperation.inserteCatagory(item); if (result > 0) { sqlSession.commit(); System.out.println("添加成功"); } else sqlSession.rollback(); MyBatisUtils.closeSession(sqlSession); } /* * 根据ID获取Catagory */ static void getTest() { SqlSession sqlSession = MyBatisUtils.getSqlSession(); ICatagoryOperation catagoryOperation = sqlSession.getMapper(ICatagoryOperation.class); System.out.println(catagoryOperation.getCatagorybyID(3).toString()); MyBatisUtils.closeSession(sqlSession); } }
7.测试运行结果
相关文章
- Mysql远程连接数据库报错排查:pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on '**.**.**.**' (timed out)")
- MySQL数据库开发的36条原则
- 还原MySql数据库失败:max_allowed_packet 设置过小导致记录写入失败
- MySQL InnoDB 备份与恢复七种方式
- MySQL Explain中key_len的计算
- 面向对语法读取mysql数据库数据例:$db->query($sql)、$result->fetch_array()
- PHP连接MySQL数据库的三种方式(mysql、mysqli、pdo)--续
- MySql中json类型的使用___mybatis存取mysql中的json
- centos下 Apache、php、mysql默认安装路径
- MySQL数据库加密和解密~认证登陆密码(mysql.user)和MySQL不区分大小写
- MySQLWorkbench链接MySQL数据库
- 〖Python 数据库开发实战 - Python与MySQL交互篇⑧〗- 项目实战 - 开发新闻管理系统(项目展示)
- mysql数据库(8):获得数据库和表的信息
- Mysql错误: ERROR 1205: Lock wait timeout exceeded try restarting transaction解决办法
- MYSQL导入数据报错|MYSQL导入超大文件报错|MYSQL导入大数据库报错:2006 - MySQL server has gone away
- Yii Framework2.0开发教程(5)数据库mysql性能
- Mysql报错:Can't connect to local MySQL server through socket '/tmp/mysql.sock'
- 【MySQL】数据库基础知识_Unit01
- 使用Java Spring消费MySQL中的数据库存储过程
- 【MySql】MySQL数据库--什么是MySQL的回表 ?
- MySQL数据库性能优化由浅入深(表设计、慢查询、SQL索引优化、Explain分析、Show Profile分析、配置优化)
- mysql root 修改密码 远程登陆