发表于: 2018-04-08 22:39:48
1 823
今天完成的事情:
在尝试mybatis连接MySQL实现增改删减。
尝试两个例子:
1.
接口类不知道为什么爆黑。
UserMapper
<?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.mybatis.IUser">
<select id="getUser" parameterType="int"
resultType="com.mybatis.User">
SELECT *
FROM USER
WHERE id = #{userId}
</select>
<insert id="insertUser" parameterType="User">
INSERT INTO USER(name,
dept, website,phone)
VALUES(#{name}, #{dept}, #{website}, #{phone})
</insert>
<select id="getUserList" resultType="com.mybatis.User">
SELECT * FROM USER
</select>
<update id="updateUser" parameterType="User">
UPDATE USER
SET
name=
#{name},
dept = #{dept},
website = #{website},
phone = #{phone}
WHERE
id =
#{id}
</update>
<delete id="deleteUser" parameterType="int">
DELETE FROM USER WHERE id = #{id}
</delete>
</mapper>
2.第二项目目录
USER
package com.mybatis;
public class User {
private int id;
private String name;
private int age;
public int getId()
{
return id;
}
public void setId(){
this.id=id;
}
public String getName(){
return name;
}
public void setName(){
this.name=name;
}
public int getAge(){
return age;
}
public void setAge(){
this.age=age;
}
public String toString(){
return "User ---[id="+id+",name="+name+",age="+age+"]---";
}
}
mabatis-config
<?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>
<!-- 引用jdbc.properties配置文件 -->
<properties resource="jdbc.properties"/>
<!--typeAliases>
<typeAlias alias="UserAlias" type="org.apache.ibatis.submitted.complex_property.User"/>
</typeAliases-->
<environments default="development"> <!--·默认的环境 ID(比如:default="development")-->
<environment id="development"> <!--·每个 environment 元素定义的环境 ID(比如:id="development")-->
<transactionManager type="JDBC"/> <!--·事务管理器的配置(比如:type="JDBC")-->
<!--数据源-->
<dataSource type="POOLED"> <!--·数据源的配置(比如:type="POOLED")-->
<property name="driver" value="jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
<property name="username" value="root"/>
<!--<property name="password" value="root"/>-->
</dataSource>
</environment>
</environments>
<!-- 注册userMapper.xml文件, userMapper.xml位于com.mybatis.mapping这个包下,
所以resource写成com/mybatis/mapping/userMapper.xml-->
<mappers>
<mapper resource="UserMapper.xml"/>
</mappers>
</configuration>
UserMapper
<?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,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的
例如namespace="com.mybatis.mapping.userMapper"就是com.mybatis.mapping(包名)+userMapper(userMapper.xml文件去除后缀)-->
<mapper namespace="UserMapper">
<select id="getUser" parameterType="int"
resultType="com.mybatis.User">
select * from users where id=#{id}
</select>
</mapper>
test
import com.mybatis.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class Test {
public static void main(String[] args) throws IOException{
//mybatisde 配置文件
String resource="mybatis-config.xml";
//使用类加载器加载mybatis的配置文件
InputStream is=Test.class.getClassLoader().getResourceAsStream(resource);
//构建sqlSession的工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
//创建能执行映射文件中sql的sqlSession
SqlSession session=sessionFactory.openSession();
/*
* 映射sql的标识字符串,
* com.mybatis.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,
* getUser是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL
*/
//映射 sql的标识字符串
String statement="UserMapper.getUser";
User user=session.selectOne(statement,2);
System.out.println(user);
}
}
明天计划的事情:
遇到的BUG让我有种无从下手的错觉,一点头绪都没了
明天打算Spring+Mybatis+Maven+MySql搭建的项目骨架。从头开始重新尝试一遍。
遇到的问题:
第二项目直接爆红
log4j:WARN No appenders could be found for logger (org.apache.ibatis.logging.LogFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException:
### Error building SqlSession.
### The error may exist in SQL Mapper Configuration
### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not find resource jdbc.properties
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:80)
at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:64)
at Test.main(Test.java:18)
Caused by: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not find resource jdbc.properties
at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:121)
at org.apache.ibatis.builder.xml.XMLConfigBuilder.parse(XMLConfigBuilder.java:99)
at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:78)
... 2 more
Caused by: java.io.IOException: Could not find resource jdbc.properties
at org.apache.ibatis.io.Resources.getResourceAsStream(Resources.java:114)
at org.apache.ibatis.io.Resources.getResourceAsStream(Resources.java:100)
at org.apache.ibatis.io.Resources.getResourceAsProperties(Resources.java:128)
at org.apache.ibatis.builder.xml.XMLConfigBuilder.propertiesElement(XMLConfigBuilder.java:225)
at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:106)
... 4 more
Process finished with exit code 1
收获:
一大堆bug
评论