mybatis主要配置文件mybatis-configuratios.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC
"-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<typeAlias type="domain.User" alias="User"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatisdb"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="domain/UserMapper.xml"/>
</mappers>
</configuration>
domain实体类以及mapper
public class User {
private String userId;
private String userName;
private String userPwd;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPwd() {
return userPwd;
}
public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}
@Override
public String toString() {
return "User [userId=" + userId + ", userName=" + userName
+ ", userPwd=" + userPwd + "]";
}
}
mapper:UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace为命名空间 ,要保证唯一-->
<mapper namespace="cn.itcast.domain.User">
<!-- 提取公共字段 -->
<sql id="allColumns">
user_id,user_name,user_pwd
</sql>
<select id="selectUserById" parameterType="int" resultType="User">
select
<include refid="allColumns"/>
from user where user_id = #{id}
</select>
<insert id="insertUser" parameterType="User" >
insert into tbl_user(
<include refid="allColumns"/>
)values(#{userId},#{userName},#{userPwd})
</insert>
</mapper>
工具类:MybatisUtils
public class MybatisUtils {
public static SqlSession getSqlSession() throws IOException{
Reader reader = Resources.getResourceAsReader("mybatis-configrations.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
return sessionFactory.openSession();
}
}
dao层:
public class UserDaoImpl implements UserDao{
private SqlSession session;
public UserDaoImpl() throws IOException{
this.session=MybatisUtils.getSqlSession();
}
@Override
public int save(User user) throws IOException {
int i = MybatisUtils.getSqlSession().insert(SQLConstants.INSERT_USER, user);
//session.commit()//加上这句也不行
return i;
}
}
常量:
package sql;
public interface SQLConstants {
public static String SELECT_USER_BY_USERID = "cn.itcast.domain.User.selectUserById";
public static String INSERT_USER = "cn.itcast.domain.User.insertUser";
}
测试:
package test;
import static org.junit.Assert.*;
import java.io.IOException;
import org.junit.Test;
import dao.UserDao;
import dao.impl.UserDaoImpl;
import domain.User;
public class MybatisTest {
@Test
public void test001() throws IOException{
UserDao dao = new UserDaoImpl();
User user = new User();
int i = (int) (Math.random()*100+1);
user.setUserId(i+"");
user.setUserName("liu"+i);
user.setUserPwd("pwd"+i);
int ret = dao.save(user);
assertTrue(ret>0);
System.out.println(ret);
}
}
输出的返回结果为1,单元测试结果为绿条通过,但是数据库中并没有存上数据。
求知道原因的朋友们给个原因和解决方案
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC
"-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<typeAlias type="domain.User" alias="User"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatisdb"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="domain/UserMapper.xml"/>
</mappers>
</configuration>
domain实体类以及mapper
public class User {
private String userId;
private String userName;
private String userPwd;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPwd() {
return userPwd;
}
public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}
@Override
public String toString() {
return "User [userId=" + userId + ", userName=" + userName
+ ", userPwd=" + userPwd + "]";
}
}
mapper:UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace为命名空间 ,要保证唯一-->
<mapper namespace="cn.itcast.domain.User">
<!-- 提取公共字段 -->
<sql id="allColumns">
user_id,user_name,user_pwd
</sql>
<select id="selectUserById" parameterType="int" resultType="User">
select
<include refid="allColumns"/>
from user where user_id = #{id}
</select>
<insert id="insertUser" parameterType="User" >
insert into tbl_user(
<include refid="allColumns"/>
)values(#{userId},#{userName},#{userPwd})
</insert>
</mapper>
工具类:MybatisUtils
public class MybatisUtils {
public static SqlSession getSqlSession() throws IOException{
Reader reader = Resources.getResourceAsReader("mybatis-configrations.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
return sessionFactory.openSession();
}
}
dao层:
public class UserDaoImpl implements UserDao{
private SqlSession session;
public UserDaoImpl() throws IOException{
this.session=MybatisUtils.getSqlSession();
}
@Override
public int save(User user) throws IOException {
int i = MybatisUtils.getSqlSession().insert(SQLConstants.INSERT_USER, user);
//session.commit()//加上这句也不行
return i;
}
}
常量:
package sql;
public interface SQLConstants {
public static String SELECT_USER_BY_USERID = "cn.itcast.domain.User.selectUserById";
public static String INSERT_USER = "cn.itcast.domain.User.insertUser";
}
测试:
package test;
import static org.junit.Assert.*;
import java.io.IOException;
import org.junit.Test;
import dao.UserDao;
import dao.impl.UserDaoImpl;
import domain.User;
public class MybatisTest {
@Test
public void test001() throws IOException{
UserDao dao = new UserDaoImpl();
User user = new User();
int i = (int) (Math.random()*100+1);
user.setUserId(i+"");
user.setUserName("liu"+i);
user.setUserPwd("pwd"+i);
int ret = dao.save(user);
assertTrue(ret>0);
System.out.println(ret);
}
}
输出的返回结果为1,单元测试结果为绿条通过,但是数据库中并没有存上数据。
求知道原因的朋友们给个原因和解决方案









