Mybatis

框架发展

Dao层->数据库的架构
Hibernate
Mybatis
Mybatis-plus

用户->Servlet层
Struts-2
Springmvc

Spring SpringBoot(整合几个框架)

Mybatis-plus

是一个Mybaits的增强工具,在Mybaits的基础上制作增强不做改变,为简化开发,提高效率而生

Mybatis工作原理

1.框架配置文件,在pom文件中配置

<dependencies>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.1</version>
        </dependency>

        <!--    mysql驱动包    -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.12</version>
        </dependency>

        <!--     连接池   -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.5</version>
        </dependency>

        <!--     简化bean代码的工具包   -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional> <!--  可选依赖-->
            <version>1.18.4</version>
        </dependency>

        <!--        junit测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>

        <!--      更清晰的打印日志  -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.6.4</version>
        </dependency>
    </dependencies>

1.1连接数据库
1.1.1 写连接数据库的properties文件

log4j.rootLogger=DEBUG,A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=[%t] [%c]-[%p] %m%n

1.1.2 mabites-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>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/smbms?
useUnicode=true&amp;characterEncoding=utf8&amp;autoReconnect=true&amp;allowMultiQuerie
s=true&amp;useSSL=false &amp;serverTimezone=GMT%2b8"/>
                <property name="username" value="root"/>
                <property name="password" value="297999"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="UserMapper.xml"/>
    </mappers>
</configuration>

1.1.3 User类
1.2扫描mapper.xml
1.2.1 Mapper接收文件:写UserMapper接口

public interface UserMapper {
    List<User> getUser();
}

1.2.2Mapper.xml配置文件:insertUser配置(sql)

<?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.wenping.mapper.UserMapper">
    <select id="getUser" resultType="com.wenping.pojo.User">
        select * from smbms_user
    </select>
</mapper>

2.测试
2.1测试代码

public class TestMybatis {
        @Test
        public void testUserList() throws Exception{

//          加载mybatis的配置文件
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory = new
                    SqlSessionFactoryBuilder().build(inputStream);
//            打开一个连接
            SqlSession sqlSession = sqlSessionFactory.openSession();
//            得到mapper对象
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            List<User> list = userMapper.getUser();
            for (User user : list) {
                System.out.println(user);
            }
        }
}

2.2测试结果

3.遇到的问题
org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: java.sql.SQ
解决:
在property的value下的最后加入时区&serverTimezone=GMT%2b8
3.测试增删改功能
3.1在UserMapper接口中加入方法

public interface UserMapper {
    //查询全部用户
    List<User> getUser();
    //查询单个用户
    User getOneUser(int id);
    //添加用户
    Integer addUser(User user);
    //修改用户
    Integer updateUser(User user);
    //删除用户
    Integer delUser(String userCode);
}

3.2在UserMapper.xml文件中添加sql语句

<select id="getOneUser" resultType="com.wenping.pojo.User">
        select * from smbms_user where id=#{id}
    </select>

    <insert id="addUser">
        insert into smbms_user(userCode,userName,userPassword) values(#{userCode},#{userName},#{userPassword})
    </insert>

    <update id="updateUser">
        update smbms_user set userPassword=#{userPassword} where id=#{id}
    </update>

    <delete id="delUser" parameterType="com.wenping.pojo.User">
        delect from smbms_user where userCode=#{userCode}
    </delete>

3.3在测试文件中填写测试方法

 //查询单个用户信息
    @Test
    public void testUser() throws Exception {

        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new
                SqlSessionFactoryBuilder().build(inputStream);

        SqlSession sqlSession = sqlSessionFactory.openSession();

        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        User oneUser = userMapper.getOneUser(1);
        System.out.println(oneUser);

    }

    //添加用户信息
    @Test
    public void testAddUser() throws Exception {

        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new
                SqlSessionFactoryBuilder().build(inputStream);

        SqlSession sqlSession = sqlSessionFactory.openSession(true);//默认提交事务

        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        Integer i = userMapper.addUser(new User(16, "wenwen", "文文", "297999", 2, null, null, null, null, null, null, null, null));
        System.out.println(i);

    }

    //修改用户信息
    @Test
    public void testUpdateUser() throws Exception {
        
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new
                SqlSessionFactoryBuilder().build(inputStream);

        SqlSession sqlSession = sqlSessionFactory.openSession(true);

        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        userMapper.updateUser(new User(22, "wenwen", "文文", "321000", null, null, null, null, null, null, null, null, null));


    }

    //删除用户信息
    @Test
    public void testDelUser() throws Exception {
        
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new
                SqlSessionFactoryBuilder().build(inputStream);

        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        Integer i = userMapper.delUser("wenwen");


    }

3.4测试结果
3.4.1查询单个用户信息

3.4.2添加用户

3.4.3修改用户信息

3.4.4删除用户
出错

posted @ 2022-05-11 17:15  想吃坚果  阅读(35)  评论(0)    收藏  举报