1.mybaits的数据源
Mybatis 将它自己的数据源分为三类:
UNPOOLED 不使用连接池的数据源(想用就查询建)
POOLED 使用连接池的数据源(常用,用的时候才池中取,完了放回)
JNDI 使用 JNDI 实现的数据源
在这三种数据源中,我们一般采用的是 POOLED 数据源(很多时候我们所说的数据源就是为了更好的管理数据 库连接,也就是我们所说的连接池技术)
2.事务控制
默认不可开启自动提交事务 需要手动提交 session.commit();
开启自动提交事务:session = factory.openSession(true);
设置为自动提交方式为 false再根据情况决定是否进行提交,这种方式更常用。因为我们可以根据业务 情况来决定提交是否进行提交。
3.动态sql语句
if where foreach
1.需求:根据返回的id或者返回的name或者其他字段来查询对应的数据
select * from user
and username like #{username} //sql加上这个
and address like #{address}
2.需求
传入多个 id 查询用户信息,用下边 sql 实现:
SELECT * FROM USERS WHERE username LIKE '%张%' AND (id =10 OR id =89 OR id=16)
这样我们在进行范围查询时,就要将一个集合中的值,作为参数动态添加进来。
public class QueryVo implements Serializable {
private List
**set ()
**get()
}
<select id="findInIds" resultType="user" parameterType="queryvo">
<include refid="defaultSql">include>
<where> <if test="ids != null and ids.size() > 0">
<foreach collection="ids" open="id in ( " close=")" item="uid" separator=",">
#{uid}
foreach>
if>
where>
select>
4.定义代码片段
select * from user
5.一对一查询
1.直接在pojo上加字段 使用内连接查询对应的字段
2.在pojo中引入另一种张表的pojo 使用resultMap 配置
select u.*,a.id as aid,a.uid,a.money from account a,user u where a.uid =u.id;
6.一对多
一样的在pojo在添加另一张表pojo的 List<> 类型 使用外连接 join on
select u.*,a.id as aid ,a.uid,a.money from user u left outer join account a on u.id =a.uid
7.多对多
跟1对多一样的 操作 数据库sql不一样而已