发表于: 2016-08-20 15:56:50
4 2331
今天完成的事情:继续写demo,写了User:
public class User {
private int id;
private String username;
private Long birthday;
private String sex;
private String address;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Long getBirthday() {
return birthday;
}
public void setBirthday(Long birthday) {
this.birthday = birthday;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString(){
return "User [id=" + id + ", username=" + username +",birthday" + birthday
+ ", sex" + sex +", address" + address + "]" ;
}
}
后面用的是Get,Set方法自动生成,
创建SqlSessionFactory:
package cn.ptteng.mybatis.sqlsessionfactory;
public class MybatisSqlSessionFactory {
Reader reader = null;
SqlSessionFactory sqlSessionFactory = null;
@Before
public void init() {
//与configuration.xml中的mapper配置类似,告诉mybatis应读取的核心配置文件
String resource = "SqlMapConfig.xml";
try {
reader = Resources.getResourceAsReader(resource);
}catch (Exception e) {
e.printStackTrace();
}
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
}
@Test
public void getUserById(){
SqlSession sqlSession = sqlSessionFactory.openSession();
User user = new User();
try {
user = sqlSession.selectOne("cn.ptteng.mybatis.Usermapper.getUserById",1);
if (user != null){
System.out.println(user);
}else{
System.out.println("没有找到该用户");
}
}catch (Exception e) {
e.printStackTrace();
}finally {
sqlSession.close();
}
}
@Test
public void insertUser(){
SqlSession sqlSession = sqlSessionFactory.openSession();
User user = new User();
user.setId(3);
user.setUsername("哆唻A梦");
user.setBirthday(20000101l);
user.setSex("女");
user.setAddress("翠微路甲十号院");
try {
sqlSession.insert("cn.ptteng.mybatis.UserMapper.insertUser",user);
} catch (Exception e) {
e.printStackTrace();
}finally {
sqlSession.close();
}
}
}
再编写UserDao接口以及接口的实现类
package cn.ptteng.mybatis.dao;
import java.util.List;
import cn.ptteng.mybatis.po.User;
public interface UserDao {
//根据用户id查询用户
public User findUserById(int id) throws Exception;
//插入用户
public void insertUser(User user) throws Exception;
//删除用户
public void deleteUserById(int id) throws Exception;
//根据id模糊查询,输出为List
public List<User> findUserByUsername(String username) throws Exception;
}
UserDaoImpl接口实现类:
package cn.ptteng.mybatis.dao;
public class UserDaoImpl implements UserDao{
private SqlSessionFactory sqlSessionFactory;
public UserDaoImpl(SqlSessionFactory sqlSessionFactory){
this.sqlSessionFactory = sqlSessionFactory;
}
public User findUserById(int id) throws Exception{
User user = null;
SqlSession sqlSession = sqlSessionFactory.openSession();
try{
user = sqlSession.selectOne("cn.ptteng.mybatis.UserMapper.findUserById",id);
}catch (Exception e){
e.printStackTrace();
}finally{
sqlSession.close();
}
sqlSession.close();
return user;
}
public void insertUser(User user) throws Exception{
SqlSession sqlSession = sqlSessionFactory.openSession();
sqlSession.insert("cn.ptteng.mybatis.UserMapper.insertUserById", user);
sqlSession.commit();
sqlSession.close();
}
public void deleteUserById(int id) throws Exception{
SqlSession sqlSession = sqlSessionFactory.openSession();
sqlSession.delete("cn.ptteng.mybatis.UserMapper.deleteUserById", id);
sqlSession.commit();
sqlSession.close();
}
public List<User> findUserByUsername(String username) throws Exception{
SqlSession sqlSession = sqlSessionFactory.openSession();
List<User> list = sqlSession.selectList("cn.ptteng.mybatis.UserMapper.findUserByUsername", username);
//List<User> list = sqlSession.selectList("test.findUserByName", username);
sqlSession.commit();
sqlSession.close();
return list;
}
}
最后编写测试类测试
package cn.ptteng.mybatis.test;
public class UserDaoImplTest {
private SqlSessionFactory sqlSessionFactory;
@Before
public void init() throws Exception{
String resource = "SqlMapConfig.xml";
// 加载配置文件到输入 流
InputStream inputStream = Resources.getResourceAsStream(resource);
//创建会话工厂
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
@Test
public void testFindUserById() throws Exception{
UserDao userDao = new UserDaoImpl(sqlSessionFactory);
User user = userDao.findUserById(11);
System.out.println(user);
}
调试了很久没跑通,提示
org.apache.ibatis.exceptions.PersistenceException:
### Error building SqlSession.
### Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: org.xml.sax.SAXParseException; lineNumber: 5; columnNumber: 16; 文档根元素 "configuration" 必须匹配 DOCTYPE 根 "configurantion"。
是指sql语句报错吗,表示网上查了没查着答案,后面是配置文件出错?
明天计划的事情:学习spring
问题:程序跑不通,打算问问师兄
收获:对mybatis了解更多了一点
评论