问题如下: 以下是我的做法,希望指点: <?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> <properties resource="jdbc.properties"></properties> <settings> <setting name="autoMappingBehavior" value="FULL"></setting> </settings> <typeAliases> <package name="com.mocoo.mvc.orm.mybatis.model"/> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/mocoo/mvc/orm/mybatis/mapping/TestMapper.xml" /> </mappers> </configuration> TestMapper.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" > <mapper namespace="com.mocoo.mvc.orm.mybatis.dao.TestMapper" > <resultMap id="BaseResultMap" type="com.mocoo.mvc.orm.mybatis.model.Test" > <id column="testId" property="testid" jdbcType="VARCHAR" /> <result column="testName" property="testname" jdbcType="VARCHAR" /> </resultMap> <sql id="Base_Column_List" > testId, testName </sql> <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.String" > select <include refid="Base_Column_List" /> from testt where testId = #{testid,jdbcType=VARCHAR} </select> <insert id="insert" parameterType="com.mocoo.mvc.orm.mybatis.model.Test" > insert into testt (testId, testName) values (#{testid,jdbcType=VARCHAR}, #{testname,jdbcType=VARCHAR}) </insert> </mapper> TestMapper接口: public interface TestMapper { int insert(Test record); Test selectByPrimaryKey(String testid); } Test 模型 public class Test { private String testid; private String testname; public String getTestid() { return testid; } public void setTestid(String testid) { this.testid = testid == null ? null : testid.trim(); } public String getTestname() { return testname; } public void setTestname(String testname) { this.testname = testname == null ? null : testname.trim(); } } TestMapperImpl 接口实现: public class TestMapperImpl implements TestMapper{ private static final String namespace = "com.mocoo.mvc.orm.mybatis.dao.TestMapper" ; private static SqlSession session = null ; private static class TestMapperImplSington { public final static TestMapperImpl instance = new TestMapperImpl() ; } private TestMapperImpl() { session = MAMybatisSqlSessionFactory.instance.getSession() ; } public static TestMapper getInstance() { return TestMapperImplSington.instance ; } public int insert(Test record) { return session.insert(namespace+".insert", record) ; } public Test selectByPrimaryKey(String testid) { return session.selectOne(namespace+".selectByPrimaryKey", testid) ; } } 测试: public static void main(String[] args) { TestMapper testMapper = TestMapperImpl.getInstance() ; Test t = new Test() ; t.setTestid("3") ; t.setTestname("vvsd"); int i = testMapper.insert(t); System.out.println(i); } ————————– 以下是我的做法,希望指点: |
|
错误呢? 贴出来啊
|
|
没有出错,程序是正确的,运行OK,就是数据库不变 ! |
|
40分 |
public int insert(Test record) { return session.insert(namespace+".insert", record) ; } 你这句的 namespace+”.insert” 这个跟你的TestMapper.xml的id=”insert”? 这个ID匹配么? 还有就是sql打出来了没,打出来了但是数据库不变的话 那是事务没提交 否则,你就设置断点,看看到哪一步了吧 |
问题在mybatis官网找到了,因为事务没有提交 … 官网说明,如下: The default openSession() method that takes no parameters will create a SqlSession with the following characteristics: A transaction scope will be started (i.e. NOT auto-commit). A Connection object will be acquired from the DataSource instance configured by the active environment. The transaction isolation level will be the default used by the driver or data source. No PreparedStatements will be reused, and no updates will be batched. ——————————————————- 谢谢你 ! 40分请笑纳 |