Mybatis实现查一个查所有
配置文件
<select id="selectAll" resultType="com.hkd.mybatis.bean.Car">
select id,car_num as carNum,brand,guide_price as guidePrice,produce_time as produceTime,car_type as carType
from t_car
</select>
这里有两个重点
1.resultType 的值要是实体类的全路径名称告诉mybatis要封装的实体类,不然就会报错
2.这里的查询语句字段一定要起一个别名,且别名要和实体类中的属性名相同,不然mybatis在封装实体类的时候,会找不到从数据库中查询到的相应字段。
查所有同上,将where后面语句去掉即可条件去掉即可。
mybatis核心配置文件标签学习
1.< environments default=“development”> < environment id=“development”>
这个标签是用来配置数据库的,默认为id为development的数据库,在下面可以自己添加< environment id=“mvc”>标签,并把想使用环境id改为自己新增的。
2. 关于SQL Mapper的namespace
< mapper namespace=“org.mybatis.example.BlogMapper”> namespace后面的空间名可以自己随意起,在SQL Mapper配置⽂件中标签的namespace属性可以翻译为命名空间,这个命名空间主要是为了防⽌sqlId冲突的。
实际上,本质上,mybatis中的sqlId的完整写法:
namespace.id
3.< transactionManager type=“JDBC”/>
transactionManager:配置事务管理器
type属性:指定事务管理器具体使⽤什么⽅式,可选值包括两个
JDBC:使⽤JDBC原⽣的事务管理机制。底层原理:事务开启
conn.setAutoCommit(false); …处理业务…事务提交conn.commit();
MANAGED:交给其它容器来管理事务,⽐如WebLogic、JBOSS等。如果没有管理事务的
容器,则没有事务。没有事务的含义:只要执⾏⼀条DML语句,则提交⼀次。
4.< dataSource type=“POOLED”>
dataSource:指定数据源
type属性:⽤来指定具体使⽤的数据库连接池的策略,可选值包括三个。
UNPOOLED:采⽤传统的获取连接的⽅式,虽然也实现Javax.sql.DataSource接⼝,但是
并没有使⽤池的思想。
property可以是:
driver 这是 JDBC 驱动的 Java 类全限定名。
url 这是数据库的 JDBC URL 地址。
username 登录数据库的⽤户名。
password 登录数据库的密码。
defaultTransactionIsolationLevel 默认的连接事务隔离级别。
defaultNetworkTimeout 等待数据库操作完成的默认⽹络超时时间(单位:毫秒)
POOLED:采⽤传统的javax.sql.DataSource规范中的连接池,mybatis中有针对规范的实
现。
property可以是(除了包含UNPOOLED中之外):
<!--最⼤连接数-->
<property name="poolMaximumActiveConnections" value="3"/>
<!--最多空闲数量-->
<property name="poolMaximumIdleConnections" value="1"/>
<!--强⾏回归池的时间-->
<property name="poolMaximumCheckoutTime" value="20000"/>
<!--这是⼀个底层设置,如果获取连接花费了相当⻓的时间,连接池会打印状
态⽇志并重新尝试获取⼀个连接(避免在误配置的情况下⼀直失败且不打印⽇志),默认值:20000
毫秒(即 20 秒)。-->
<property name="poolTimeToWait" value="20000"/>
poolMaximumActiveConnections:最⼤的活动的连接数量。默认值10
poolMaximumIdleConnections:最⼤的空闲连接数量。默认值5
poolMaximumCheckoutTime:强⾏回归池的时间。默认值20秒。
poolTimeToWait:当⽆法获取到空闲连接时,每隔20秒打印⼀次⽇志,避免因代码配置有误,导致傻等。(时⻓是可以配置的)
最⼤的活动的连接数量就是连接池连接数量的上限。默认值10,如果有10个请求正在使⽤这10个连接,
第11个请求只能等待空闲连接。
最⼤的空闲连接数量。默认值5,如何已经有了5个空闲连接,当第6个连接要空闲下来的时候,连接池会
选择关闭该连接对象。来减少数据库的开销。
需要根据系统的并发情况,来合理调整连接池最⼤连接数以及最多空闲数量。充分发挥数据库连接池的
性能。【可以根据实际情况进⾏测试,然后调整⼀个合理的数量。】
JNDI:采⽤服务器提供的JNDI技术实现,来获取DataSource对象,不同的服务器所能拿到
DataSource是不⼀样。如果不是web或者maven的war⼯程,JNDI是不能使⽤的。
property可以是(最多只包含以下两个属性):
initial_context 这个属性⽤来在 InitialContext 中寻找上下⽂(即,
initialContext.lookup(initial_context))这是个可选属性,如果忽略,那么将会直接从
InitialContext 中寻找 data_source 属性。
data_source 这是引⽤数据源实例位置的上下⽂路径。提供了 initial_context 配置时会
在其返回的上下⽂中进⾏查找,没有提供时则直接在 InitialContext 中查找。
POOLED中几个配置的测试
上面配置中设置的是连接池中最多3个连接对象,而for循环中需要四个连接对象,由运行结果可以看出在等待20秒后强行收回一个连接对象,并提供给新的请求。