2019.03.04(java之mybatis框架)

1. 创建maven项目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
自动导入
在这里插入图片描述
创建成功
在这里插入图片描述

2. 在pom.xml里导包

  1. 导入数据库jar包
  2. 导入mybatis框架的jar包
    在这里插入图片描述
    点我获取包资源地址

3. 创建resource文件夹

用来存放配置文件(注意:resource文件夹应该/src/main文件下面,main文件下面一共有两个文件夹,一个是java,一个是resource)
在这里插入图片描述
将resources文件夹变为resource属性
在这里插入图片描述

4. 加入配置文件

在这里插入图片描述
在resources目录下选中上面创建的模板,然后输入xml文件名字mybatis.cfg.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>
	<settings>
        <!-- 打印查询语句 -->
        <setting name="logImpl" value="STDOUT_LOGGING" />
    </settings>

</configuration>

5. mybatis-cfg.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>
    <environments default="test1">
        <environment id="test1">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"></property>
                <property name="url" value="jdbc:mysql://localhost:3306/test1?serverTimezone=Asia/Shanghai"></property>
                <property name="username" value="root"></property>
                <property name="password" value="cqrjxk39"></property>
            </dataSource>
        </environment>
    </environments>
</configuration>

6. 创建数据表user的映射

在这里插入图片描述

public class User {
    private int uid;
    private String username;
    private int age;
    private String hobby;

    public User() {
    }

    @Override
    public String toString() {
        return "User{" +
                "uid=" + uid +
                ", username='" + username + '\'' +
                ", age=" + age +
                ", hobby='" + hobby + '\'' +
                '}';
    }

    public User(int uid, String username, int age, String hobby) {
        this.uid = uid;
        this.username = username;
        this.age = age;
        this.hobby = hobby;
    }

    public int getUid() {
        return uid;
    }

    public void setUid(int uid) {
        this.uid = uid;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getHobby() {
        return hobby;
    }

    public void setHobby(String hobby) {
        this.hobby = hobby;
    }
}

在mybatis-cfg.xml配置文件中添加别名,减少代码数量
在这里插入图片描述

7.写Usermapper.Xml

实现对数据库的增删改查功能

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njdf.mapper.UserMapper">
	<sql id="sql1">select * from user </sql>
    <sql id="sql2">uid</sql>
    <!--使用别名-->
    <select id="find1" resultType="User">
        <include refid="sql1"></include>
    </select>
    <select id="find2" resultType="int">
        select <include refid="sql2"></include> from user
    </select>
    <select id="find" resultType="com.njdf.bean.User">
        select * from user
    </select>
    <insert id="add" parameterType="com.njdf.bean.User">
        insert into user values (null ,#{username},#{age},#{hobby})
    </insert>
    <update id="update" parameterType="com.njdf.bean.User">
        update user set username = #{username},age = #{age},hobby = #{hobby} where uid = #{uid}
    </update>
    <delete id="del" parameterType="int">
        delete from user where uid =#{id}
    </delete>
    <select id="sel" parameterType="com.njdf.bean.User" resultType="com.njdf.bean.User">
        select * from user where uid = #{uid}
    </select>
    <!--传入类型不区分大小写-->
    <delete id="d2" parameterType="map">
        delete from user where username = #{key1} and age = #{key2}
    </delete>
    <select id="sele" parameterType="string" resultType="com.njdf.bean.User">
        select * from user where username like "%"#{str}"%";
    </select>
    <select id="dele" parameterType="int">
        delete from user where uid in
        <foreach collection="array" open="(" close=")" separator="," item="index">
            #{index}
        </foreach>
    </select>
    <!--动态使用sql语句-->
    <select id="dysel" parameterType="user" resultType="user">
        select * from user
        <where>
            <if test="username != null">and username = #{username}</if>
            <if test="age != null">and age = #{age}</if>
            <if test="hobby != null">and hobby = #{hobby}</if>
        </where>
    </select>
    <!--只需要使用一个标签,如果说这个标签为null,就使用下个标签-->
    <select id="dysele" parameterType="user" resultType="user">
        select * from user
        <where>
            <choose>
                <when test="username != null">username = #{username}</when>
                <when test="age != null">age = #{age}</when>
                <when test="hobby != null">hobby = #{hobby}</when>
                <otherwise> id = #{uid}</otherwise>
            </choose>
        </where>
    </select>
     <!--设置返回值类型-->
    <resultMap id="userhaha" type="user">
        <!--首先主键标签要用id,property属性是映射类的属性名 column是对应数据库的字段名-->
        <id property="uid" column="uid"></id>
        <result property="username" column="username"></result>
        <result property="age" column="age"></result>
        <result property="hobby" column="hobby"></result>
        <!--对应多对一使用association-->
        <association property="de" javaType="com.njdf.bean.Department">
            <id property="departmentId" column="departmentId"></id>
            <result property="departmentName" column="departmentName"></result>
        </association>
        <!--对应一对多使用association-->
        <collection property="books" javaType="list" ofType="com.njdf.bean.Books">
            <id property="bookId" column="bookId"></id>
            <result property="bookName" column="bookName"></result>
            <result property="uid" column="uid"></result>
        </collection>
    </resultMap>

    <select id="userde" parameterType="int" resultMap="userhaha">
        select * from user where uid = #{id}
    </select>
    <select id="a" parameterType="int" resultMap="userhaha">
        select * from user u left join department d on u.departmentId = d.departmentId where u.uid = #{m}
    </select>
    <select id="b" parameterType="int" resultMap="userhaha">
        select * from user u,department d,Books b where u.departmentId = d.departmentId and u.uid = b.uid and u.uid = #{x}
    </select>
</mapper>

8. 把写好的mapper配置到mybatis-cfg.xml里面去

在这里插入图片描述

9. 在pom.xml中,把xml文件加入编译

否则会报错
在这里插入图片描述

	<build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>

10.写test类

import com.njdf.bean.User;
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 org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class AppTest {
    @Test
    public void Test1() throws IOException {
        System.out.println("hello world!");
        InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-cfg.xml");
        SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession sqlSession = build.openSession();
        User user = new User("李四",22,"喝饮料");
        sqlSession.insert("com.njdf.mapper.UserMapper.add",user);
        User user1 = new User(1,"张三",23,"唱歌");
        sqlSession.update("com.njdf.mapper.UserMapper.update",user1);
        sqlSession.delete("com.njdf.mapper.UserMapper.del",5);
        Map<String,Object> map = new HashMap<String,Object>();
        map.put("key1","wangwu");
        map.put("key2",25);
        sqlSession.delete("com.njdf.mapper.UserMapper.d2",map);
        int[] Array = {4,5,7,8};
        sqlSession.delete("com.njdf.mapper.UserMapper.dele",Array);
        String str = "三";
        List<User> users1 = sqlSession.selectList("com.njdf.mapper.UserMapper.sele", str);
        for (User u:users1
             ) {
            System.out.println(u);
        }
        System.out.println("============================================");
        List<User> users = sqlSession.selectList("com.njdf.mapper.UserMapper.find1");
        for (User u:users
        ) {
            System.out.println(u);
        }
        System.out.println("===============================================");
        User user3 = new User(2);
        User u = sqlSession.selectOne("com.njdf.mapper.UserMapper.sel", user3);
        System.out.println(u);
        System.out.println("===================================================");
        List<Integer> indexs = sqlSession.selectList("com.njdf.mapper.UserMapper.find2");
        for (int i:indexs
             ) {
            System.out.println(i);
        }
        System.out.println("====================================================");
        User user2 = new User("zhangsan");
        List<User> users2 = sqlSession.selectList("com.njdf.mapper.UserMapper.dysel",user2);
        for (User u1:users2
             ) {
            System.out.println(u1);
        }

        User user2 = new User("zhangsan");
        List<User> users2 = sqlSession.selectList("com.njdf.mapper.UserMapper.dysele",user2);
        for (User u1:users2
        ) {
            System.out.println(u1);
        }
        List<User> users = sqlSession.selectList("com.njdf.mapper.UserMapper.userde",1);
        System.out.println(users);
        List<User> users = sqlSession.selectList("com.njdf.mapper.UserMapper.a", 2);
        System.out.println(users);

        List<User> users = sqlSession.selectList("com.njdf.mapper.UserMapper.b", 2);
        System.out.println(users);
        //事务提交
        sqlSession.commit();
        //缓存清理
        sqlSession.clearCache();
    }
}

11.代码结构

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_34191426/article/details/88122110
今日推荐