mybatis+mysql入门例子

2018-12-26  本文已影响0人  寻找大海的鱼

一、简介
  MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。
二、入门使用
1.使用maven管理依赖

<packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.1</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.46</version>
        </dependency>
    </dependencies>

    <build>
        <finalName>${project.artifactId}</finalName>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>false</filtering>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.0.2</version>
                <configuration>
                    <classesDirectory>target/classes/</classesDirectory>
                    <archive>
                        <addMavenDescriptor>true</addMavenDescriptor>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                            <mainClass>com.wyh.Main</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.10</version>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.5.5</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>com.wyh.Main</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

2.在resources下创建application.xml和jdbc.properties
   2.1 application.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"></properties>
    <environments default="development">
        <!--配置不同的环境下的数据源-->
        <!--开发模式下-->
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc_driver}"/>
                <property name="url" value="${jdbc_url}"/>
                <property name="username" value="${jdbc_username}"/>
                <property name="password" value="${jdbc_password}"/>
            </dataSource>
        </environment>
        <!--生产模式下-->
        <environment id="product">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc_driver}"/>
                <property name="url" value="${jdbc_url}"/>
                <property name="username" value="${jdbc_username}"/>
                <property name="password" value="${jdbc_password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/wyh/mapper/UserMapper.xml"/>
    </mappers>
</configuration>

   2.2 jdbc.properties

jdbc_driver=com.mysql.jdbc.Driver
jdbc_url=jdbc\:mysql\://127.0.0.1:3306/stu?characterEncoding=utf-8&useSSL=true
jdbc_username=root
jdbc_password=123456

3.建立pojo的包,建立User实体类

public class User {
    private Integer id;
    private String name;
    private String data;

    public User() {
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", data='" + data + '\'' +
                '}';
    }
}

4.建立mapper包
4.1建立UserMapper接口

public interface UserMapper {
        public User selectUserById(Integer userId);
        public List<User> selectUserAll();
        public void insertUser(User user);
        public void updateUser(User user);
}

4.2建立UserMapper.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.wyh.mapper.UserMapper">
    <!--设置domain类和数据库中表的字段一一对应,注意数据库字段和domain类中的字段名称不致,此处一定要!-->
    <resultMap id="BaseResultMap" type="com.wyh.pojo.User">
        <id column="ID" property="id" jdbcType="INTEGER" />
        <result column="NAME" property="name" jdbcType="CHAR" />
        <result column="DATA" property="data" jdbcType="CHAR" />
    </resultMap>
    <!-- 查询单条记录 -->
    <select id="selectUserById" parameterType="int" resultMap="BaseResultMap">
        SELECT * FROM student WHERE ID = #{id}
    </select>
    <!-- 查询所有记录 -->
    <select id="selectUserAll" resultMap="BaseResultMap">
        SELECT * FROM student
    </select>
    <!-- 插入单条记录 -->
    <insert id="insertUser" parameterType="com.wyh.pojo.User">
        insert into student (id,name,data)
        values (#{id},#{name},#{data})
    </insert>
    <update id="updateUser" parameterType="com.wyh.pojo.User">
        update student
        <set >
          <if test="data != null" >
            data = #{data ,jdbcType=CHAR}
          </if>
          ,<if test="name != null" >
            name = #{name ,jdbcType=CHAR}
        </if>
        </set>
        where id = #{id}
    </update>
</mapper>

5.建立utils包,并建立UpdateDB类

public class UpdateDB {
    public static void updateDB(User user) {
        SqlSession session = null;

        try {
            // 读取配置信息
            String resource = "application.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();

            // 选择不同的环境
            String env = "product";
            SqlSessionFactory factory = builder.build(inputStream,env);

            // 产生SqlSession对象
            session = factory.openSession();
            System.out.println(session);

            // 获取映射对象
            UserMapper userMapper = session.getMapper(UserMapper.class);

            // 获取id为1的账户
            //User user = userMapper.selectUserById(1);
            //System.out.println(user);

            // 获取所有账户
            List<User> arrayList = userMapper.selectUserAll();
            System.out.println("before:" + arrayList);

            //更新数据

            userMapper.updateUser(user);
            session.commit();

            // 获取所有账户
            arrayList = userMapper.selectUserAll();
            System.out.println("after"+arrayList);


        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            if (session != null)
                // 关闭连接
                session.close();
        }

    }
}

6.测试程序
建立主类

public class Main {
    public static void main(String[] args) {
        User user = new User();
        user.setId(1);
        user.setName("zhangsan");
        user.setData("100");
        UpdateDB.updateDB(user);
    }
}

运行测试,如下图


test.jpg
上一篇 下一篇

猜你喜欢

热点阅读