[mybatis]快速搭建一个mybatis程序,实现对数据的增删改查 ...

种地  金牌会员 | 2022-8-31 09:42:23 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 859|帖子 859|积分 2577

什么是 MyBatis?


  • MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。
  • MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。
  • MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
  • MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了[google code](https://baike.baidu.com/item/google code/2346604),并且改名为MyBatis。2013年11月迁移到Github
持久层

  • 持久化就是将程序的数据在持久状态转化的过程
  • 内存,断电即逝
为什么需要mybatis

  • 帮助程序员将数据存到数据库中。
  • 方便
  • 传统的jdbc代码太复杂了,简化,框架,自动化
  • 简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件。
  • 灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。
  • 解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰。sql和代码的分离,提高了可维护性。
  • 提供映射标签,支持对象与数据库的orm字段关系映射。
  • 提供对象关系映射标签,支持对象关系组建维护。
  • 提供xml标签,支持编写动态sql。
一个mybatis程序

1.创建一个数据库
2.在maven项目的pom.xml文件中导入依赖文件
  1.    
  2.     <dependency>
  3.         <groupId>mysql</groupId>
  4.         <artifactId>mysql-connector-java</artifactId>
  5.         <version>8.0.29</version>
  6.     </dependency>
  7.     <dependency>
  8.         <groupId>junit</groupId>
  9.         <artifactId>junit</artifactId>
  10.         <version>4.13.1</version>
  11.     </dependency>
  12. <dependency>
  13.     <groupId>org.mybatis</groupId>
  14.     <artifactId>mybatis</artifactId>
  15.     <version>3.5.9</version>
  16. </dependency>
复制代码
3.在资源文件夹下命名一个mybatis_config.xml的核心配置文件
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3.         PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4.         "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6.     <environments default="development">
  7.         <environment id="development">
  8. <mappers>
  9.         <mapper resource="mapper/perpleMapper.xml"></mapper>
  10.     </mappers><transactionManager type="JDBC"/>
  11. <mappers>
  12.         <mapper resource="mapper/perpleMapper.xml"></mapper>
  13.     </mappers><dataSource type="POOLED">
  14. <mappers>
  15.         <mapper resource="mapper/perpleMapper.xml"></mapper>
  16.     </mappers>    <property name="driver" value="com.mysql.jdbc.Driver"/>
  17. <mappers>
  18.         <mapper resource="mapper/perpleMapper.xml"></mapper>
  19.     </mappers>    <property name="url" value="jdbc:mysql://localhost:3306/jdbc?useSSL=false&useUnicode=true&characterEncoding=utf-8"/>
  20. <mappers>
  21.         <mapper resource="mapper/perpleMapper.xml"></mapper>
  22.     </mappers>    <property name="username" value="root"/>
  23. <mappers>
  24.         <mapper resource="mapper/perpleMapper.xml"></mapper>
  25.     </mappers>    <property name="password" value="123123"/>
  26. <mappers>
  27.         <mapper resource="mapper/perpleMapper.xml"></mapper>
  28.     </mappers></dataSource>
  29.         </environment>
  30.     </environments>
  31.    
  32. </configuration>
复制代码
4.编写操作数据库要用的SQLSession对象并且封装成一个工具类
  1. import org.apache.ibatis.io.Resources;
  2. import org.apache.ibatis.session.SqlSession;
  3. import org.apache.ibatis.session.SqlSessionFactory;
  4. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  5. import java.io.IOException;
  6. import java.io.InputStream;
  7. /**
  8. * @author panglili
  9. * @create 2022-07-21-14:49
  10. */
  11. public class MybatisUtil {
  12.     static SqlSessionFactory build;
  13.     static {
  14.         String resource="mybatis-config.xml";
  15.         InputStream inputStream = null;
  16.         try {
  17. <mappers>
  18.         <mapper resource="mapper/perpleMapper.xml"></mapper>
  19.     </mappers>inputStream = Resources.getResourceAsStream(resource);
  20. <mappers>
  21.         <mapper resource="mapper/perpleMapper.xml"></mapper>
  22.     </mappers>build = new SqlSessionFactoryBuilder().build(inputStream);
  23.         } catch (IOException e) {
  24. <mappers>
  25.         <mapper resource="mapper/perpleMapper.xml"></mapper>
  26.     </mappers>e.printStackTrace();
  27.         }
  28.     }
  29.     //通过sqlSessionFactoryBuild创建拿到了工厂,由这个工厂就可以拿到sqlSession了
  30.     //sqlSession中封装了所有操作数据库的代码
  31.     public static SqlSession getSqlSession(){
  32.         SqlSession sqlSession = build.openSession();
  33.         return sqlSession;
  34.     }
  35. }
复制代码
5.与数据库对应的实体类
  1. package pojo;
  2. import java.util.Date;
  3. /**
  4. * @author panglili
  5. * @create 2022-07-21-15:01
  6. */
  7. public class perple {
  8.     private int id;
  9.     private String name;
  10.     private int age;
  11.     private Date birth;
  12.     public int getId() {
  13.         return id;
  14.     }
  15.     public void setId(int id) {
  16.         this.id = id;
  17.     }
  18.     public String getName() {
  19.         return name;
  20.     }
  21.     public void setName(String name) {
  22.         this.name = name;
  23.     }
  24.     public int getAge() {
  25.         return age;
  26.     }
  27.     public void setAge(int age) {
  28.         this.age = age;
  29.     }
  30.     public Date getBirth() {
  31.         return birth;
  32.     }
  33.     public void setBirth(Date birth) {
  34.         this.birth = birth;
  35.     }
  36.     @Override
  37.     public String toString() {
  38.         return "perple{" +
  39. <mappers>
  40.         <mapper resource="mapper/perpleMapper.xml"></mapper>
  41.     </mappers>    "id=" + id +
  42. <mappers>
  43.         <mapper resource="mapper/perpleMapper.xml"></mapper>
  44.     </mappers>    ", name='" + name + '\'' +
  45. <mappers>
  46.         <mapper resource="mapper/perpleMapper.xml"></mapper>
  47.     </mappers>    ", age=" + age +
  48. <mappers>
  49.         <mapper resource="mapper/perpleMapper.xml"></mapper>
  50.     </mappers>    ", birth=" + birth +
  51. <mappers>
  52.         <mapper resource="mapper/perpleMapper.xml"></mapper>
  53.     </mappers>    '}';
  54.     }
  55. }
复制代码
6.接口与接口的配置操作数据库文件,尽量命名为相同
  1. package mapper;
  2. import pojo.perple;
  3. import java.util.List;
  4. /**
  5. * @author panglili
  6. * @create 2022-07-21-15:07
  7. */
  8. public interface perpleMapper {
  9.     //查询所有信息
  10.     List<perple> perples();
  11.     //通过id查询某个用户
  12.     perple queryById();
  13. }
复制代码
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3.         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4.         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="mapper.perpleMapper">
  6.     <select id="perples" resultType="pojo.perples">
  7.         select * from perple;
  8.     </select>
  9. </mapper>
复制代码
7.注册到mybatis配置文件
  1. <mappers>
  2.         <mapper resource="mapper/perpleMapper.xml"></mapper>
  3.     </mappers>
复制代码
8.测试
[code]package mapper;import org.apache.ibatis.session.SqlSession;import pojo.perple;import util.MybatisUtil;import java.util.List;/** * @author panglili * @create 2022-07-21-15:16 */public class perpleTest {    public void test(){        SqlSession sqlSession = MybatisUtil.getSqlSession();        perpleMapper mapper = sqlSession.getMapper(perpleMapper.class);        List perples = mapper.();        for(int i=0;i
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

种地

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表