/*service*/publicintinsertUser(User user){
int i = userDao.addUser(user);return i;}/*dao*///插入@OverridepublicintaddUser(User user){
String sql ="insert into user values(?,?,?,?,?)";int update = jdbcTemplate.update(sql, user.getUserId(), user.getUserName(), user.getPassWord(), user.getAddRess(), user.getPhone());return update;}
JdbcTemplate 操作数据库(修改和删除)
修改、删除与插入类似,用的方法相同
修改
/*service*/publicintupdateUser(User user){
int i = userDao.updateUser(user);return i;}//修改@OverridepublicintupdateUser(User user){
String sql ="update user set name=?,address=? where id=?";int update = jdbcTemplate.update(sql, user.getUserName(), user.getAddRess(), user.getUserId());return update;}
删除
/*service*/publicintdeleteUser(String id){
int i = userDao.deleteUser(id);return i;}//删除@OverridepublicintdeleteUser(String id){
String sql ="delete from user where id=?";int update = jdbcTemplate.update(sql, id);return update;}
JdbcTemplate 操作数据库(查询返回某个值)
类似于“ 查询表里面有多少条记录,返回是某个值 ”这样的要求
使用 JdbcTemplate 实现查询返回某个值代码
有两个参数
第一个参数:sql 语句
第二个参数:返回类型 Class
//sevicepublicintselcetCount(){
int count = userDao.selectCount();return count;}//dao@OverridepublicintselectCount(){
String sql ="select count(*) from user";
Integer count = jdbcTemplate.queryForObject(sql, Integer.class);return count;}
JdbcTemplate 操作数据库(查询返回对象)
场景:查询用户详情
JdbcTemplate 实现查询返回对象
有三个参数
第一个参数:sql 语句
第二个参数:RowMapper 是接口,针对返回不同类型数据,使用这个接口里面实现类完成 数据封装
第三个参数:sql 语句值
//servicepublicintselcetCount(){
int count = userDao.selectCount();return count;}//dao//查询一个用户@Overridepublic User findBookInfo(String id){
String sql ="select id userId,name userName,password,address,phone from user where id=?";
User user = jdbcTemplate.queryForObject(sql,newBeanPropertyRowMapper<User>(User.class), id);return user;}
JdbcTemplate 操作数据库(查询返回集合)
场景:查询图书列表分页
调用 JdbcTemplate 方法实现查询返回集合
有三个参数
第一个参数:sql 语句
第二个参数:RowMapper 是接口,针对返回不同类型数据,使用这个接口里面实现类完成 数据封装
第三个参数:sql 语句值
//servicepublic List<User>findBookList(){
List<User> list = userDao.getBeanList();return list;}//dao@Overridepublic List<User>getBeanList(){
String sql ="select id userId,name userName,password,address,phone from user";
List<User> query = jdbcTemplate.query(sql,newBeanPropertyRowMapper<User>(User.class));return query;}
//批量删除
@Override
public void batchDeleteBook(List batchArgs) {
String sql = "delete from t_book where user_id=?";
int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
System.out.println(Arrays.toString(ints));
}
//批量删除
List batchArgs = new ArrayList<>();Object[] o1 = {"3"};
Object[] o2 = {"4"};
batchArgs.add(o1);
batchArgs.add(o2);
//调用方法实现批量删除
bookService.batchDelete(batchArgs);
附录:完整代码
UserDaoImpl.java
/**
* @author cVzhanshi
* @create 2021-04-16 21:27
*/@RepositorypublicclassUserDaoImplimplementsUserDao{
@Autowiredprivate JdbcTemplate jdbcTemplate;//插入@OverridepublicintaddUser(User user){
String sql ="insert into user values(?,?,?,?,?)";int update = jdbcTemplate.update(sql, user.getUserId(), user.getUserName(), user.getPassWord(), user.getAddRess(), user.getPhone());return update;}//修改@OverridepublicintupdateUser(User user){
String sql ="update user set name=?,address=? where id=?";int update = jdbcTemplate.update(sql, user.getUserName(), user.getAddRess(), user.getUserId());return update;}//删除@OverridepublicintdeleteUser(String id){
String sql ="delete from user where id=?";int update = jdbcTemplate.update(sql, id);return update;}//查询一个用户@Overridepublic User findBookInfo(String id){
String sql ="select id userId,name userName,password,address,phone from user where id=?";
User user = jdbcTemplate.queryForObject(sql,newBeanPropertyRowMapper<User>(User.class), id);return user;}//获取记录数@OverridepublicintselectCount(){
String sql ="select count(*) from user";
Integer count = jdbcTemplate.queryForObject(sql, Integer.class);return count;}//获取用户列表@Overridepublic List<User>getBeanList(){
String sql ="select id userId,name userName,password,address,phone from user";
List<User> query = jdbcTemplate.query(sql,newBeanPropertyRowMapper<User>(User.class));return query;}}
UserService.java
/**
* @author cVzhanshi
* @create 2021-04-16 21:27
*/@ServicepublicclassUserService{
@Autowiredprivate UserDao userDao;publicintinsertUser(User user){
int i = userDao.addUser(user);return i;}publicintupdateUser(User user){
int i = userDao.updateUser(user);return i;}publicintdeleteUser(String id){
int i = userDao.deleteUser(id);return i;}publicintselcetCount(){
int count = userDao.selectCount();return count;}public User findBookInfo(String id){
User user = userDao.findBookInfo(id);return user;}public List<User>findBookList(){
List<User> list = userDao.getBeanList();return list;}}
分页显示一直是web开发中一大烦琐的难题,传统的网页设计只在一个JSP或者ASP页面中书写所有关于数据库操作的代码,那样做分页可能简单一点,但当把网站分层开发后,分页就比较困难了,下面是我做Spring+Hibernate+Struts2项目时设计的分页代码,与大家分享交流。
1、DAO层接口的设计,在MemberDao接口中定义了如下两个方法:
public in
/*
*使用对象类型
*/
--建立和使用简单对象类型
--对象类型包括对象类型规范和对象类型体两部分。
--建立和使用不包含任何方法的对象类型
CREATE OR REPLACE TYPE person_typ1 as OBJECT(
name varchar2(10),gender varchar2(4),birthdate date
);
drop type p
what 什么
your 你
name 名字
my 我的
am 是
one 一
two 二
three 三
four 四
five 五
class 班级,课
six 六
seven 七
eight 八
nince 九
ten 十
zero 零
how 怎样
old 老的
eleven 十一
twelve 十二
thirteen
spring security 3中推荐使用BCrypt算法加密密码了,以前使用的是md5,
Md5PasswordEncoder 和 ShaPasswordEncoder,现在不推荐了,推荐用bcrpt
Bcrpt中的salt可以是随机的,比如:
int i = 0;
while (i < 10) {
String password = "1234
1.前言。
如题。
2.代码
(1)单表查重复数据,根据a分组
SELECT m.a,m.b, INNER JOIN (select a,b,COUNT(*) AS rank FROM test.`A` A GROUP BY a HAVING rank>1 )k ON m.a=k.a
(2)多表查询 ,
使用改为le