mybatis数据示例

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_43666423/article/details/98336812

* 约定在main文件夹下有Java源代码的Java文件夹和放有配置文件的resources文件夹

关于配置文件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="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="UNPOOLED">
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
                <property name="username" value="root"/>
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="org/mybatis/example/BlogMapper.xml"/>
    </mappers>
</configuration>
关于util包下的MybatisUtil.java里的内容示例:
package com.sz.util;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class MybatisUtil {

    private static SqlSessionFactory sqlSessionFactory;

    static {
        String resource = "mybatis.cfg.xml";
        InputStream in = null;

        try {
            in = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if (in != null){
                try {
                    in.close();
                }catch (IOException e){
                    e.printStackTrace();
                }
            }
        }
    }
    
	public static SqlSession getSession(){
        return sqlSessionFactory.openSession();
    }

}

关于pojo包下的Girl.java内容示例
package com.sz.pojo;

import java.util.Date;

public class Girl {

    private Long id;

    private String name;

    private String flower;

    private Date birthday;

    public Long getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public String getFlower() {
        return flower;
    }

    public void setFlower(String flower) {
        this.flower = flower;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
}

关于mapper包下的GirMapper.java示例
package com.sz.mapper;

import com.sz.pojo.Girl;

public interface GirlMapper {

    int insert(Girl girl);

}

关于配置文件中com.sz.mapper.GirlMapper.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.sz.mapper.GirlMapper">

    <insert id="insert">
        insert into girl (name,flower,birthday) value (#{name},#{flower},#{birthday})
    </insert>

</mapper>
关于测试类示例:
package com.sz;

import com.sz.mapper.GirlMapper;
import com.sz.pojo.Girl;
import com.sz.util.MybatisUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.Date;

public class Test1 {

    @Test
    public void m1(){

        SqlSession sqlSession = MybatisUtil.getSession();

        GirlMapper mapper = sqlSession.getMapper(GirlMapper.class);
        Girl g = new Girl();
        g.setName("LingXingRu");
        g.setFlower("HuoJianHua");
        g.setBirthday(new Date());

        mapper.insert(g);
        sqlSession.commit();

        sqlSession.close();
    }
}

关于mybatis.cfg.xml配置文件中各节点
  • properties节点:resource引用了外部的jdbc.properties文件
  • 外部引用的jdbc.properties文件级别高于properties内部的
<properties resource="jdbc.properties">
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
        <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false"/>
        <property name="driver" value="com.mysql.jdbc.Driver"/>
    </properties>
  • typeAliases节点:给完整的类名注册一个简写的类名
<typeAliases>
     <typeAlias type="com.sz.pojo.Girl" alias="girl"/>
    <!-- package name="com.sz.pojo"/> -->
</typeAliases>

这样可以在写查询语句时:

<select id="queryById" resultType="com.sz.pojo.Girl">
     select * from girl where id=#{id};
</select>
将“com.sz.pojo.Girl”简写为:“girl”
而如果使用了package就会将注册的包下的所有类全部注册,默认为简写类名
  • mappers节点:
 <mappers>
 		<!-- 通过类路径引入xml文件-->
        <mapper resource="com/sz/mapper/GirlMapper.xml"/>
        <!-- 直接将这个包下的所有Mapper全部引入,不需要重新引入,一劳永逸-->
        <package name="com.sz.mapper"/>
 </mappers>
mytabis关于参数问题
  • 单个参数问题基本没有问题
    传入多个参数时可以再mapper接口中申明
Girl queryByNameFlower(@Param("name") String name,@Param("flower") String flower);
加上@Param("name")即可对name进行申明,进而在sql语句中可以这么写:
<select id="queryByNameFlower" resultType="com.sz.pojo.Girl">
        select * from girl where name = #{name} and flower = #{flower}
</select>
否则只能这么写:
<select id="queryByNameFlower" resultType="com.sz.pojo.Girl">
        select * from girl where name = #{arg0} and flower = #{arg1}
</select>

猜你喜欢

转载自blog.csdn.net/qq_43666423/article/details/98336812