摘要:本篇文章探讨了JAVA从入门到精通之Mybatis笔记2,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入。
本篇文章探讨了JAVA从入门到精通之Mybatis笔记2,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入。
"
使用Mybatis完成的CRUD操作
个人总结的一些小规律
学习过程中碰到的错误:
org.apache.ibatis.exceptions.PersistenceException: ### Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
虽然报错信息提示的 很明显是sql语法报错,不过我一时之间没有没有看出sql语句错在哪里,后来才发现是插入sql语句的括号写错了,不是小括号,而是大括号
错误写法:insert into user(username,address,sex,birthday)value(#(username),#(address),#(sex),#(birthday); 正确写法:insert into user(username,address,sex,birthday)value(#{username},#{address},#{sex},#{birthday});
JavaBean类
package com.itheima.domain;import java.io.Serializable;import java.util.Date;public class User implements Serializable { private Integer id; private String username; private String address; private String sex; private Date birthday; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } @Override public String toString() { return ""User{"" + ""id="" + id + "", username='"" + username + '\'' + "", address='"" + address + '\'' + "", sex='"" + sex + '\'' + "", birthday="" + birthday + '}'; } }
dao层
package com.itheima.dao;import com.itheima.domain.User;import java.util.List;public interface IUserDao { //查询所有用户 List findAll(); //保存用户 void saveUser(User user); //更新用户 void updateUser(User user); //根据id删除用户 void deleteUser(Integer userId); //查询一个,根据id查询用户信息 User findById(Integer userId); //根据名称模糊查询用户信息 List findByName(String username); //查询总用户数 int findTotal(); }
配置文件
select * from user; select last_insert_id(); insert into user(username,address,sex,birthday)value(#{username},#{address},#{sex},#{birthday}); update user set username=#{username},address=#{address},sex=#{sex},birthday=#{birthday} where id=#{id} delete from user where id=#{id} select * from user where id = #{uid} select * from user where username like #{name} select count(id) from user;
测试类
package com.itheima.test;import com.itheima.dao.IUserDao;import com.itheima.domain.User;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import org.junit.After;import org.junit.Before;import org.junit.Test;import java.io.IOException;import java.io.InputStream;import java.util.Date;import java.util.List;public class MybatisTest { private InputStream in;//读取配置文件 private SqlSession sqlSession;//操作数据库 private IUserDao userDao; @Before//用于在测试方法执行之前执行,在其他方法执行之前执行init方法 public void init() throws IOException { //读取配置文件,生成字节输入流 in = Resources.getResourceAsStream(""SqlMapConfig.xml""); //获取SqlSessionFactory SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in); //获取sqlSession对象 sqlSession = factory.openSession(); //获取dao的代理对象 userDao = sqlSession.getMapper(IUserDao.class); } @After//用于测试方法执行之后执行 public void destroy() throws IOException { //提交事务 sqlSession.commit(); //释放资源 sqlSession.close(); in.close(); } @Test //查询所有用户 public void testFindAll() throws IOException { //执行查询方法 List users = userDao.findAll(); for(User user:users){ System.out.println(user); } } @Test //保存用户 public void testSave(){ User user = new User(); user.setUsername(""王五""); user.setAddress(""北京市""); user.setSex(""男""); user.setBirthday(new Date()); System.out.println(""保存前""+user); //执行保存方法 userDao.saveUser(user); System.out.println(""保存后""+user); } @Test //更新用户 public void testUpdate(){ User user = new User(); user.setId(50); user.setUsername(""李四""); user.setAddress(""北京市""); user.setSex(""男""); user.setBirthday(new Date()); //执行查询方法 userDao.updateUser(user); } @Test //删除用户 public void testDelete(){ userDao.deleteUser(48); } @Test //查询一个用户 public void testFindOne(){ User user = userDao.findById(48); System.out.println(user); } @Test //查询一个用户 public void testFindByName(){ List users = userDao.findByName(""%王%""); for(User user :users){ System.out.println(user); } } @Test //查询一个用户 public void testFindTotal(){ int count = userDao.findTotal(); System.out.println(count); } }
typeAliases标签和Package标签
-->
-->
mybatis连接池的分类
连接池:我们在实际开发中都会使用连接池,因为他可以减少我们获取连接所消耗的时间
mybatis中的连接池
mybatis连接池提供了3种方式的配置:
配置的位置:主配置文件SqlMapConfig.xml的dataSource标签,type属性就是表示采用何种连接池方式
type属性的取值有三种
1.POOLED 采用传统的javax.sql.DataSource规范中的连接池,mybatis中有针对规范的实现
2.UNPOOLED 采用的获取连接的方式,虽然也实现Javax.sql.DataSource接口,但是并没有使用池的思想
3.采用服务器提供的JNDI技术实现,来获取DataSource对象,不同的服务器所能拿到DataSource是不一样的,如果不是web或者maven的war工程,是不能使用的(tomcat服务器,采用连接池就是dbcp连接池)
" 本文由职坐标整理发布,学习更多的相关知识,请关注职坐标IT知识库!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号