博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MyBatis有哪些配置
阅读量:4494 次
发布时间:2019-06-08

本文共 3082 字,大约阅读时间需要 10 分钟。

Mybatis基本配置和搭建

 
  •  

下载地址

Mybatis3 最新下载地址:

一, 创建配置文件

在新建的project的src目录下,新建mybatis-config.xml

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

接下来为大家解释下该配置文件中的内容

1. settings 

定义mybatis的一些全局设置,这里 配置的两个属性

mapUnderscoreToCamelCase: 在映射database column名字和entity属性名时,自动将带下划线column名转化为常见的java驼峰形式属性名 

lazyLoadingEnabled: 延迟加载entity的关联属性

2. typeAlias 

定义java类型的别名,比如这里分别将com.yun.entity.Employee和com.yun.entity.Customer设置别名为Employee,Customer。这样在别处配置文件中使用 它们时,就不必再指明带package全名。

3. environments 

主要用于配置数据源 
可以配置多个environment,以用于不同的产品环境,这里只配置一个用于测试,并定义id为“local”

transactionManager: 有两种类型 

1, JDBC : 使用从数据源返回的连接管理commit和rollback 
2, MANAGED : 依靠容器来管理transaction

dataSource: 有3种类型 

1, UNPOOLED :每次请求新打开连接,用完后关闭连接 
2, POOLED : 使用连接池管理连接 
3, JNDI :使用容器管理datasource时使用

4. mappers 

简而言之,mapper文件用于定义sql语句,以及与其对应的entity 
以employee-mapper.xml为例,以下是其简单实现:

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

这里,我们定义了2句sql statement,分别是

selectAllEmployee: 查找所有employee 

selectEmployeeById:根据id查找特定employee

返回结果类型均为Employee(看!这里typeAlias就起到作用了,不需要指明class全名),区别在于前者是个List。

这里大家可能会对selectEmployeeById 中的#{id}感到疑惑,别急,下面会为您介绍。

NOTE:配置文件中的顺序不能乱来,对于例子中的几个配置,要按照顺序来定义:settings -> typeAliases -> environments -> mappers.因为mybatis是按照一个固定顺序来解析这个配置文件的,如果顺序不对,加载时会报错。

二,获得SqlSession

不赘述,直接上代码

public class MySqlSession {    private static String mybatisResource = "mybatis-config.xml"; private static SqlSessionFactory sqlSessionFactory; public static SqlSessionFactory getSqlSessionFactory() { try { if (sqlSessionFactory == null) { InputStream inputStream = Resources.getResourceAsStream(mybatisResource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } return sqlSessionFactory; } catch (IOException e) { throw new RuntimeException(e); } } public static SqlSession newSqlSession() { SqlSession session = getSqlSessionFactory().openSession(); return session; } }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

通过调用MySqlSession.newSqlSession()即可获得一个SQLSession对象,这也是mybatis中最核心的类了,负责各种select,update,delete接口等,这里就不详细解释了。

三,DAO

马上就到最后一步啦! 

还是直接上代码~

public class BatisEmployeeDao {    public List
getAllEmployees() { SqlSession session = MySqlSession.newSqlSession(); try { List
ret = session.selectList("selectAllEmployee"); return ret; } finally { session.close(); } } public Employee getEmployeeById(Long id) { SqlSession session = MySqlSession.newSqlSession(); try { Employee employee = session.selectOne("selectEmployeeById", id); return employee; } finally { session.close(); } } }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

看到这里,想必各位看官也知道前面#{id}的value是哪里来的了,是的,它就是 getEmployeeById(Long id)中的参数,但两者名字不要求一致哦。

好了,到这里,一个最简单

转载于:https://www.cnblogs.com/erma0-007/p/8647385.html

你可能感兴趣的文章
Linux中 bash_profile和.bashrc的区别(启动文件)
查看>>
Tomcat出现java.lang.Exception: Socket bind failed
查看>>
AngularJS
查看>>
DBCP、C3P0、Proxool 、 BoneCP开源连接池的比较
查看>>
[.NET WebAPI系列01] WebAPI 简单例子
查看>>
[leetcode] Minimum Path Sum
查看>>
PAT乙级1021.个位数统计(15 分)
查看>>
强化学习Q-Learning算法详解
查看>>
Spring MVC
查看>>
winform treeview 复选框,父节点子节点联动Bug
查看>>
C#_委托类型以及Action/Fanc_2018Oct
查看>>
es数组去重的简写
查看>>
Training Logisches Denken
查看>>
谁分配谁释放
查看>>
正则表达式
查看>>
Java集合之LinkedHashSet源码分析
查看>>
David Silver强化学习Lecture1:强化学习简介
查看>>
开源项目
查看>>
mvc4 找到多个与名为“xx”的控制器匹配的类型
查看>>
unix系统内核优点
查看>>