• mybatis(入门)


    首先创建表:建表Sql文件 

    -- 导出 mybatis 的数据库结构
    CREATE DATABASE IF NOT EXISTS `mybatis` /*!40100 DEFAULT CHARACTER SET utf8 */;
    USE `mybatis`;
    -- 导出 表 mybatis.t_user 结构
    CREATE TABLE IF NOT EXISTS `t_user` (
    `username` varchar(50) DEFAULT NULL,
    `password` varchar(50) DEFAULT NULL,
    `nickname` varchar(50) DEFAULT NULL,
    `type` tinyint(4) DEFAULT NULL,
    `id` int(10) NOT NULL AUTO_INCREMENT,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

     1、创建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>
        <properties resource="jdbc.properties" />
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC" />
                <!-- 配置mybatis的pooled的数据源 -->
                <dataSource type="POOLED">
                    <property name="driver" value="${driver}" />
                    <property name="url" value="${url}" />
                    <property name="username" value="${username}" />
                    <property name="password" value="${password}" />
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <mapper resource="edu/hhxy/btais/User.xml"/><!--加载mapper文件-->
        </mappers>
    </configuration>

    src/jdbc.properties

    2、根据数据表创建相应的实体类

    Address.java

    package edu.hhxy.btais;
    
    public class Address {
        private int id;
        private String name;
        private String phone;
        private String postcode;
        private User user;
        
        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 getPhone() {
            return phone;
        }
        public void setPhone(String phone) {
            this.phone = phone;
        }
        public String getPostcode() {
            return postcode;
        }
        public void setPostcode(String postcode) {
            this.postcode = postcode;
        }
        public User getUser() {
            return user;
        }
        public void setUser(User user) {
            this.user = user;
        }
    }

     User.java 

    package edu.hhxy.btais;
    
    import java.util.List;
    
    public class User {
        private int id;
        private String username;
        private String password;
        private String nickname;
        private int type;
        private List<Address> addresses;
    
        public List<Address> getAddresses() {
            return addresses;
        }
    
        public void setAddresses(List<Address> addresses) {
            this.addresses = addresses;
        }
    
        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 getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public String getNickname() {
            return nickname;
        }
    
        public void setNickname(String nickname) {
            this.nickname = nickname;
        }
    
        public int getType() {
            return type;
        }
    
        public void setType(int type) {
            this.type = type;
        }
    }

     3、创建mapper文件完成对实体类的映射,该文件同样是xml的文件

     User.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="edu.hhxy.btais.User"><!--名称空间-->
        <insert id="add" parameterType="edu.hhxy.btais.User"><!--全类名 包名+类名-->
            insert into t_user
            (username,password,nickname,type)
            value(#{username},#{password},#{nickname},#{type})
        </insert>
    </mapper>

    4、创建SQlSession,并且通过SqlSession完成对数据库的操作

    package edu.hhxy.btais.test;
    
    import java.io.IOException;
    import java.io.InputStream;
    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 edu.hhxy.btais.User;
    public class TestFirstMybatis {
    
        public static void main(String[] args) {
            try {
                // 1、创建配置文件(mybatis-config.xml)的输入流
                InputStream is = Resources
                        .getResourceAsStream("mybatis-config.xml");
                System.out.println(is.available());
                // 2、创建SQLSessionFactory
                SqlSessionFactory factory = new SqlSessionFactoryBuilder()
                        .build(is);
                // 3、创建SQLSessioin
                SqlSession session = factory.openSession();
                // 4、调用mapper文件插入数据(调用之前需要将mapper文件加入到mybatis-config.xml中)
                User u = new User();
                u.setNickname("孙悟空");
                u.setPassword("123");
                u.setType(0);
                u.setUsername("wukong");
                session.insert("edu.hhxy.btais.User.add", u);
                session.commit();//别忘了提交
                session.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    5、最佳实践

    1、创建相应的MyBatisUtil完成对Session的获取
    2、不使用annotation完成sql的映射

  • 相关阅读:
    面试官:请介绍搜索引擎背后的经典数据结构和算法
    C++是如何从代码到游戏的?
    后浪程序猿 996 摸鱼求生指南
    我收集了39节从0入门《人工智能+Python》视频课,价值1999,免费下载 等会就删!...
    LeetCode 例题精讲 | 01 反转链表:如何轻松重构链表
    LeetCode 例题精讲 | 15 最长公共子序列:二维动态规划的解法
    统统卸载!再见了,流氓顽固软件!
    26 页高清大数据开发代码速查表,提升效率必备!【可下载】
    LeetCode 例题精讲 | 04 用双指针解 Two Sum:缩减搜索空间
    吆,这接口设计的可以!可以!可以!
  • 原文地址:https://www.cnblogs.com/jianfengyun/p/3721688.html
Copyright © 2020-2023  润新知