Mybatis入门01

pom.xml中加入需要的依赖

<!--        mybatis依赖-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.6</version>
        </dependency>
<!--        mysql连接依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-mxj</artifactId>
            <version>5.0.12</version>
        </dependency>

resources目录下导入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>
<!--    配置MySQL环境-->
    <environments default="mysql">
        <environment id="mysql">
<!--            配置事务类型-->
            <transactionManager type="JDBC"/>
<!--            配置数据源连接池-->
            <dataSource type="POOLED">
<!--                配置基本信息-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/book"/>
                <property name="username" value="book"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
<!--    指定映射配置文件的位置,指的是每个dao独立的视频文件-->
    <mappers>
        <mapper resource="com/itheima/dao/IUserDao.xml"/>
    </mappers>
</configuration>

创建Mybatis的工具类

1、利用Resources.getResourceAsStream()的方法读取config.xml的文件,生成InputStream类型的ins
2、创建一个SqlSessionFactoryBuilder的对象,利用对象的build(ins)函数生成sqlSessionFactory
3、调用sqlSessionFactory的openSession()函数就可以获得session对象去操作数据了。

public class MybatisUtils {
    private static SqlSessionFactory sqlSessionFactory;
    static {
        String resources = "SqlMapConfig.xml";
        InputStream ins = null;
        try {
            ins = Resources.getResourceAsStream(resources);
            SqlSessionFactoryBuilder sessionFactoryBuilder = new SqlSessionFactoryBuilder();
            sqlSessionFactory = sessionFactoryBuilder.build(ins);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession();
    }
}

在pojo下创建实体类User

//这里使用了lombok下的注释,可以自动封装
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User  {
    private Integer id;
    private String username;
    private String password;
}

在dao下创建UserDao的接口

package com.itheima.dao;

import com.itheima.domain.User;

import java.util.List;
import java.util.Map;

/**
 * 用户的持久层接口
 */
public interface IUserDao {

    List<User> getUserLike(String val);
    //查询所有操作
    List<User> findAll();

    User getUserByid(int id);

    User getUserByid2(Map<String,Object> map);
    //万能map
    Integer addUser2(Map<String,Object> map);

    User addUser(User user);

    Integer updateUser(User user);

    Integer deleteUser(int id);
}

在resource下创建UserDao的同名配置xml文件

ps:这里要注意xml文件要和UserDao的接口文件的文件目录相同,比如UserDao的接口在com.itheima.dao的包下,那么UserDao.xml也要在com/itheima/dao的目录下

ps:使用 #{username} 的形式获取参数

<?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.itheima.dao.IUserDao">

    <select id="getUserLike" resultType="com.itheima.domain.User" parameterType="String">
        select * from book.user where username like "%"#{value}"%"
    </select>

    <select id="findAll" resultType="com.itheima.domain.User">
        select * from User
    </select>

    <select id="getUserByid" resultType="com.itheima.domain.User" parameterType="int">
        select * from book.user where id = #{id};
    </select>

    <select id="getUserByid2" parameterType="map" resultType="com.itheima.domain.User">
        select * from book.user where id = #{userid};
    </select>

    <insert id="addUser" parameterType="com.itheima.domain.User">
        insert into book.user (id,username,password) values (#{id},#{username},#{password})
    </insert>

<!--    传递map的key   -->
    <insert id="addUser2" parameterType="map">
        insert into book.user (id,username,password) values (#{userid},#{userName},#{passWord})
    </insert>
    
    <update id="updateUser" parameterType="com.itheima.domain.User">
        update book.user set username = #{username} ,password = #{password} where id=#{id};
    </update>
    
    <delete id="deleteUser" parameterType="int">
        delete from book.user where id = #{id};
    </delete>
</mapper>

Test类测试

public class MyTest {
    @Test
    public void selectUser() {
    	//获取SqlSession对象
        SqlSession session = MybatisUtils.getSession();

		//获取mapper,这里的mapper是从config.xml的mappers中获取的UserDao.xml
        UserMapper mapper = session.getMapper(UserMapper.class);
        //调用相关函数
        List<User> users = mapper.selectUser();
 
        for (User user: users){
            System.out.println(user);
        }
        session.close();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值