发表于: 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了解更多了一点




返回列表 返回列表
评论

    分享到