美文网首页Java分布式高可用架构Java 杂谈
Mybatis—接口实现增删改查和分页查询

Mybatis—接口实现增删改查和分页查询

作者: Java高级进阶 | 来源:发表于2019-01-06 20:12 被阅读4次

    一 创建UserMapper接口

    package com.yuyi.mapper;

       import java.util.List;

        import org.apache.ibatis.annotations.Delete;

        import org.apache.ibatis.annotations.Insert;

        import org.apache.ibatis.annotations.Param;

        import org.apache.ibatis.annotations.Select;

        import com.yuyi.pojo.User;

       public interface UserMapper {

        @Insert("insert into user(username) values (#{username})")

        public int addUser(User user);

       @Select("select * from user where id=#{id}")

        public User getUserById(int id);

       @Delete("DELETE FROM user WHERE id=#{id}")

        public void deleteUser(int id);

        @Select("SELECT * from user")

        public List<User> findAllUser();

         @Select("select * from user limit #{start},#{count} ")

        public List<User> listByPage(@Param("start") int start, @Param("count")int count);

         @Select("select count(*) from user")

        public int count();

        }

    二 配置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">

    <configuration>

    <plugins>

    <plugin interceptor="com.github.pagehelper.PageInterceptor">

    </plugin>

    </plugins>

    <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/mybatis" />

    <property name="username" value="账号" />

    <property name="password" value="密码" />

    </dataSource>

    </environment>

    </environments>

    <mappers>

    <mapper class="com.yuyi.mapper.UserMapper"/>

    </mappers>

    </configuration>

    三 测试

    import java.util.List;

    import org.apache.ibatis.session.SqlSession;

    import org.apache.ibatis.session.SqlSessionFactory;

    import org.junit.Test;

    import com.yuyi.mapper.UserMapper;

    import com.yuyi.pojo.User;

    import com.yuyi.util.SqlSessionFactoryUtil;

    public class UserTest {

    @Test

    public void testGetUserById() {

    SqlSessionFactory sessionFactory=SqlSessionFactoryUtil.getSqlSessionFactory();

    SqlSession sqlSession=sessionFactory.openSession(true);

    UserMapper userMapper=sqlSession.getMapper(UserMapper.class);

    User user=userMapper.getUserById(27);

    System.out.println(user);

    sqlSession.commit();

    sqlSession.close();

    }

    @Test

    public void testAddUser() {

    SqlSessionFactory sessionFactory=SqlSessionFactoryUtil.getSqlSessionFactory();

    SqlSession sqlSession=sessionFactory.openSession(true);

    UserMapper userMapper=sqlSession.getMapper(UserMapper.class);

    User user=new User();

    user.setUsername("xxx");

    userMapper.addUser(user);

    }

    @Test

    public void testDeleteUser() {

    SqlSessionFactory sessionFactory=SqlSessionFactoryUtil.getSqlSessionFactory();

    SqlSession sqlSession=sessionFactory.openSession(true);

    UserMapper userMapper=sqlSession.getMapper(UserMapper.class);

    userMapper.deleteUser(127);

    }

    @Test

    public void testFindAllUser() {

    SqlSessionFactory sessionFactory=SqlSessionFactoryUtil.getSqlSessionFactory();

    SqlSession sqlSession=sessionFactory.openSession(true);

    UserMapper userMapper=sqlSession.getMapper(UserMapper.class);

    List<User> listUser=userMapper.findAllUser();

    for (User user : listUser) {

    System.out.println(user.getUsername());

    }

    }

    @Test

    public void testListByPage() {

    SqlSessionFactory sessionFactory=SqlSessionFactoryUtil.getSqlSessionFactory();

    SqlSession sqlSession=sessionFactory.openSession(true);

    UserMapper userMapper=sqlSession.getMapper(UserMapper.class);

    List<User> listUser=userMapper.listByPage(2, 100);

    for (User user : listUser) {

    System.out.println(user.getUsername());

    }

    sqlSession.commit();

    sqlSession.close();

    }

    @Test

    public void testCount() {

    SqlSessionFactory sessionFactory=SqlSessionFactoryUtil.getSqlSessionFactory();

    SqlSession sqlSession=sessionFactory.openSession(true);

    UserMapper userMapper=sqlSession.getMapper(UserMapper.class);

    int count=userMapper.count();

    System.out.println("总数为:"+count);

    sqlSession.commit();

    sqlSession.close();

    }

    }

    四 DTD文件的配置

    window——preferences——XML——XML Catalog——Add

    配置好mapper.dtd和config.dtd后再重新打开后就会有相应的提示

    五 配置文件

    environments环境

    MyBatis可以配置多种环境,比如开发、测试和生

    产环境需要有不同的配置。

    • 每种环境使用一个environment标签进行配置并指

    定唯一标识符

    • 可以通过environments标签中的default属性指定

    一个环境的标识符来快速的切换环境

    environment-指定具体环境

    id:指定当前环境的唯一标识

    • transactionManager、和dataSource都必须有

    transactionManager

    type: JDBC | MANAGED | 自定义

    – JDBC:使用了 JDBC 的提交和回滚设置,依赖于从数

    据源得到的连接来管理事务范围。

    JdbcTransactionFactory

    – MANAGED:不提交或回滚一个连接、让容器来管理

    事务的整个生命周期(比如 JEE 应用服务器的上下

    文)。 ManagedTransactionFactory

    – 自定义:实现TransactionFactory接口,type=全类名/

    别名

    dataSource

    type: UNPOOLED | POOLED | JNDI | 自定义

    – UNPOOLED:不使用连接池,

    UnpooledDataSourceFactory

    – POOLED:使用连接池, PooledDataSourceFactory

    – JNDI: 在EJB 或应用服务器这类容器中查找指定的数

    据源

    – 自定义:实现DataSourceFactory接口,定义数据源的

    获取方式。

    • 实际开发中我们使用Spring管理数据源,并进行

    事务控制的配置来覆盖上述配置

    六 SqlSession

    SqlSession 的实例不是线程安全的,因此是不能

    被共享的。

    • SqlSession每次使用完成后需要正确关闭,这个

    关闭操作是必须的

    • SqlSession可以直接调用方法的id进行数据库操

    作,但是我们一般还是推荐使用SqlSession获取

    到Dao接口的代理类,执行代理对象的方法,可

    以更安全的进行类型检查操作

    在此我向大家推荐一个架构学习交流群。交流学习群号:938837867 暗号:555 里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备

    相关文章

      网友评论

        本文标题:Mybatis—接口实现增删改查和分页查询

        本文链接:https://www.haomeiwen.com/subject/klherqtx.html