ssm-Mybatis环境搭建(maven)和CRUD

1.Mybatis环境搭建

1.新建一个maven工程
2.在pom.xml中添加项目中需要使用的依赖jar包坐标

    <dependencies>
    <!--mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.5</version>
        </dependency>
        <!--测试单元 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.10</version>
        </dependency>
        <!--mysql -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>
        <!--日志- ->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.12</version>
        </dependency>
    </dependencies>

3.编写Javabean,实现序列化

public class User  implements Serializable {
    private int id;
    private String username;
    private Date birthday;
    private String sex;
    private String address;
    }

右键生成set/get方法和toString方法
4.在resources中导入日志配置文件log4j.properties
5.在resources中新建主配置文件SqlMapConfig.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">

添加两部分内容:环境和映射mapper

<configuration>
    <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/eesy_mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    
    <mappers>
        <mapper resource="com/it/dao/IUserDao.xml"/>
    </mappers>
</configuration>

6.编写持久层Dao接口和对应的映射文件
在这里插入图片描述
在IUserDao中编写CRUD抽象方法

public interface IUserDao {
/**
 * 查询所有用户信息
 */
List<User> findAll();
}

在IUserDao.xml中编写sql语句,语句中的id属性名与接口中对应的方法名相同

注:在resources中建文件夹时,需要分多次一次一次的建,不能直接建com.it.dao。否则为一层文件夹

<?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.it.dao.IUserDao">
    <!-- 配置查询所有操作 -->
    <select id="findAll" resultType="com.it.domain.User">
        select * from user;
   </select>
</mapper>

环境配置成功

2.CRUD

在test文件中编写主函数或者测试方法

public class MybatisTest {
    public static void main(String[] args) throws Exception{
        //1.读取配置文件
        InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
        //2.创建SqlSessionFactory工厂
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = builder.build(in);
        //3.使用工厂生产SqlSession对象
        SqlSession session = factory.openSession();
        //4.使用SqlSession创建的Dao接口的代理对象
        IUserDao userDao = session.getMapper(IUserDao.class);
        //5.使用代理对象执行方法
        List<User> users = userDao.findAll();
        for (User user:users){
            System.out.println(user);
        }
        //6.释放资源
        session.close();
        in.close();
    }
}

改进:每次新调用方法,就需要重新建立工厂,生产sqlSession对象(相当于原来jdbc的三个对象),重新生成代理对象,最后都关闭资源。
这两部分都抽取出来以简化代码

public class MybatisTest {

    private InputStream in;
    private SqlSession sqlSession;
    private IUserDao userDao;

    @Before//用于在测试方法执行之前执行
    public void init()throws Exception{
        //1.读取配置文件,生成字节输入流
        in = Resources.getResourceAsStream("SqlMapConfig.xml");
        //2.获取SqlSessionFactory
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
        //3.获取SqlSession对象
        sqlSession = factory.openSession();
        //4.获取dao的代理对象
        userDao = sqlSession.getMapper(IUserDao.class);
    }

    @After//用于在测试方法执行之后执行
    public void destroy()throws Exception{
        //提交事务
        sqlSession.commit();
        //6.释放资源
        sqlSession.close();
        in.close();
    }
/**
     * 测试查询所有
     */
    @Test
    public void testFindAll(){
        //5.执行查询所有方法
        List<User> users = userDao.findAll();
        for(User user : users){
            System.out.println(user);
        }
        
 }

猜你喜欢

转载自blog.csdn.net/weixin_45773603/article/details/105924922