1.连接池
连接池的连接按照顺序编号,当需要当需要使用时,从连接池中取出一个,
其他的连接按顺序从新编号;当使用的连接释放后,放回连接池,获得一个新的编号;
2.mybatis中的连接池
三种配置方式:
unpooled中没有池的思想,每次用都获取一些给新的连接
PooledDataSource和UnPooledDataSource两个类,是连接池类型的实现类
(红色表示一个线程开始请求资源连接)连接池是一个ArrayList集合
3.mybatis中的事物
4.动态sql语句
<if>可用来对选择查询条件加以判断,<where>内标签可以嵌套<if>,从而避免了where 1=1的写法
例如:
<foreach>标签,进行范围查询
item的值和标签内的值要保持一致
5.mybatis中的多表查询
建表语句
CREATE TABLE t_account1(
id INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
uid INT(11) NOT NULL,
money DOUBLE NOT NULL,
FOREIGN KEY(uid) REFERENCES t_user(id)
)ENGINE=INNODB DEFAULT CHARSET=utf8
1)一对一
2)一对多
在User类中添加账户的属性集合List<Account> accounts;
sql语句:SELECT * FROM t_user u LEFT OUTER JOIN t_account a ON u.id = a.uid
表的做外连接,左表的数据将全部显示,同时显示出右表中含有信息的数据
配置接口类的xml文件:
3)多对多的关系
角色实体类中:
从用户到角色:
user类中
6.JNDI
创建一个新的maven项目 webapp、 勾选架构、完善maven项目结构
部分sql语句:
CREATE TABLE t_account1(
id INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
uid INT(11) NOT NULL,
money DOUBLE NOT NULL,
FOREIGN KEY(uid) REFERENCES t_user(id)
)ENGINE=INNODB DEFAULT CHARSET=utf8
INSERT INTO t_account VALUES(NULL,21,500);
SELECT a.*,u.username ,u.sex,u.address FROM t_user u,t_account a WHERE u.id = a.uid;
SELECT u.*,a.id AS aid,a.uid,a.money FROM t_account a,t_user u WHERE u.id = a.uid;
SELECT * FROM t_user u LEFT OUTER JOIN t_account a ON u.id = a.uid
CREATE TABLE t_role(
rid INT NOT NULL,
rname VARCHAR(30) DEFAULT NULL COMMENT '角色名称',
rdesc VARCHAR(60) DEFAULT NULL COMMENT '角色描述',
PRIMARY KEY(rid)
)ENGINE=INNODB DEFAULT CHARSET=utf8
INSERT INTO t_role(rid,rname,rdesc) VALUES(1,'老师','授业解惑'),(2,'老师2','授业解惑2')
DROP TABLE IF EXISTS t_userrole
CREATE TABLE t_userrole(
uidd INT(11) NOT NULL COMMENT '用户编号',
ridd INT(11) NOT NULL COMMENT '角色编号',
PRIMARY KEY(uidd,ridd),
CONSTRAINT FOREIGN KEY(ridd) REFERENCES t_role(rid),
CONSTRAINT FOREIGN KEY(uidd) REFERENCES t_user(id)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
INSERT INTO t_userrole(uidd,ridd) VALUES(7,1),(21,1),(7,2)
SELECT u.*,r.rid,r.rname,r.rdesc FROM t_role r
LEFT OUTER JOIN t_userrole ur ON r.rid = ur.ridd
LEFT OUTER JOIN t_user u ON u.id = ur.uidd
SELECT u.*,r.rid,r.rname,r.rdesc FROM t_user u
LEFT OUTER JOIN t_userrole ur ON u.id = ur.uidd
LEFT OUTER JOIN t_role r ON r.rid = ur.ridd