栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

mybatis:映射文件&&核心配置文件

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mybatis:映射文件&&核心配置文件

Mybatis映射文件深入

添加约束



一. 基本标签
    标签:select,delete,insert,update属性:

    namespace:命名空间resultType:查询结果对应的实体类型parameterType:传入参数对象的类型(Integer可直接写int)id:语句标识符,与命名空间共同组成查询标识

二. 动态sql语句 1. if 标签
   
        select * from user
        
            
                #{id}
            
        
    
    @Test
    public void test2() throws IOException {
        //配置condition条件
        List list = new ArrayList();
        list.add(2);
        list.add(1);

        //获得核心配置文件
        InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
        //获得session工厂对象
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        //获得session回话对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //获得mapper对象
        UserMapper userMapper = (UserMapper) sqlSession.getMapper(UserMapper.class);

        //执行操作
        List user = userMapper.findByIds(list);
        System.out.println(user);

    }
三. sql标签:SQL的片段抽取
	
  	select * from user 
  	
    
Mybatis核心配置文件

添加约束:



1. environments标签

environments

transactionManager的type参数

♥JDBC:直接使用JDBC的提交和回滚设置,依赖于从数据源得到的连接来管理事务作用域MANAGED:不常用 dataSource的type参数:

UNPOOLED:这个数据源的实现只是每次被请求时打开和关闭连接。♥POOLED:这种数据源的实现利用“池”的概念将JDBC 连接对象组织起来。JNDl:这个数据源的实现是为了能在如 EJB 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个JNDI 上下文的引用。 2. mappers标签

mappers标签

作用:加载映射文件方式:

♥使用相对于类路径的资源引用,例如: 3. properties标签

作用:加载额外配置的properties文件,如数据源的配置信息的文件

4. typeAliases标签

作用:自定义别名mybatis已配置好的的别名:
string、int、long、double、boolean自定义步骤:
使用:
5. typeHandlers标签

typeHandlers标签

类处理器:mybatis在预处理语句中设置一个参数和从结果集取出一个值时,都会用类处理器将获取的值以合适的方式转换成java类型。默认类处理器:
重写类型处理器和自定义类型处理器

开发步骤:

定义转换类继承类baseTypeHandler

覆盖4个未实现的方法

setNonNullParameter为java程序设置数据到数据库的回调方法,getNullableResult
为查询时 mysql的字符串类型转换成java的Type类型的方法
) 在MyBatis核心配置文件中进行注册测试转换是否正确 案例:

需求:一个Java中的Date数据类型,我想将之存到数据库的时候存成个1970年至今的毫秒数,取出来时转换成java的Date,即ava的Date与数据库的varchar毫秒值之问转换。创建:

1.创建实现类并覆盖方法2.配置文件

//注意:Date有两个包,不要弄错,这里使用的是util.Date
public class DateTypeHandler extends baseTypeHandler {

    //将java类型转换成数据库需要的类型
    @Override
    public void setNonNullParameter(PreparedStatement preparedStatement, int i, Date date, JdbcType jdbcType) throws SQLException {
        //i:
        //date:要转换的date对象
        long time = date.getTime();//获取date的时间毫秒值
        preparedStatement.setLong(i,time);
    }

    //将数据库需要的类型转换成java类型
    @Override
    public Date getNullableResult(ResultSet resultSet, String s) throws SQLException {
        //resultSet:查询到的结果集
        //s:要转换的字段名称

        //获取结果集需要的数据(bigint型)转换成long型,再转换成Date型,返回
        long aLong = resultSet.getLong(s);
        Date date = new Date(aLong);
        return date;
    }

    @Override
    public Date getNullableResult(ResultSet resultSet, int i) throws SQLException {
        long aLong = resultSet.getLong(i);
        Date date = new Date(aLong);
        return date;
    }

    @Override
    public Date getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
        long aLong = callableStatement.getLong(i);
        Date date = new Date(aLong);
        return date;
    }
}

   
        
    
6. plugins标签

plugins标签

作用:对第三方插件进行引用,拓展功能例如:引入分页助手PageHelper插件进行分页

PageInfo相关参数

当前页 : pageInfo.getPageNum()每页显示条数 : pageInfo.getPageSize()总条数 :pageInfo.getTotal()其他见下面测试 步骤:

1)导入PageHelper坐标2)在核心配置文件配置PageHelper插件3)测试

    导坐标
    
      com.github.pagehelper
      pagehelper
      5.1.2
    

    
      com.github.jsqlparser
      jsqlparser
      1.0
    
    配置插件
    
    
        
        
                
                
        
    
    测试
    @Test
    public void test1() throws IOException {
        InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();

        //设置分页相关参数  当前页+每页显示的条数
        PageHelper.startPage(1,2);

        //开始查询
        UserMapper userMapper = (UserMapper) sqlSession.getMapper(UserMapper.class);
        List users = (List) userMapper.findAll();

        //分页打印
        for(User user:users){
            System.out.println(user);
        }
        //PageInfo相关参数
        PageInfo pageInfo = new PageInfo(users);
        System.out.println("当前页" + pageInfo.getPageNum());
        System.out.println("每页显示条数" + pageInfo.getPageSize());
        System.out.println("总条数" + pageInfo.getTotal());
        System.out.println("总页数" + pageInfo.getPages());
        System.out.println("上一页" + pageInfo.getPrePage());
        System.out.println("下一页" + pageInfo.getNextPage());
        System.out.println("是否是第一页" + pageInfo.isIsFirstPage());
        System.out.println("是否是最后一页" + pageInfo.isIsLastPage());

        sqlSession.close();
    }
    结果
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/732749.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号