发表于: 2017-07-11 01:04:37

1 1513


今天完成的事情:注:这是零点后写的日报,所以这是2017.7.10的日报)

17.编写DAO,分别JdbcTemplate和Mybatis连接数据库,注意使用JDBCTemplate的时候分离Interface和Imple,使用Mybatis的时候注意理解为什么不需要Impl,注意遵守命名规范。


类、方法、变量名按以下连接规范书写,还不会写test,先写了个main方法来测试

http://blog.csdn.net/tristansmile/article/details/7989670


JdbcTemlpate部分:

项目结构:

Dao:

public class UserInterfaceImplDao implements UserInterfaceDao {
private JdbcTemplate jdbcTemplate;
   private DataSource dataSource;

   public void setDataSource(DataSource ds) {
this.dataSource = ds;
       this.jdbcTemplate = new JdbcTemplate(dataSource);
   }

public void addUser(User user) {
String sql = "INSERT INTO user(user_name,password,sex) value(?,?,?)";
       jdbcTemplate.update(sql,user.getUser_name(),user.getPassword(),user.getSex());
   }
}

Spring配置:

<beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
   <context:component-scan base-package="cn.summerwaves"/>

   <!--配置数据库 -->
   <context:property-placeholder location="jdbc.properties"/>
   <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
         destroy-method="close"
         p:driverClassName="${jdbc.driverClassName}"
         p:url="${jdbc.url}"
         p:username="${jdbc.usename}"
         p:password="${jdbc.password}"/>


   <bean id="UserInterfaceImplDao"
         class="cn.summerwaves.dao.UserInterfaceImplDao">
       <property name="dataSource" ref="dataSource" />
   </bean>


</beans>

测试:

public class Launcher {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("context.xml");
       UserInterfaceImplDao userInterfaceImplDao = (UserInterfaceImplDao)context.getBean("UserInterfaceImplDao");

       String[] user_name = { "Wang", "Hui", "Yu", "Yuan", "Yuan", "Yang"};
       String[] password = { "1612151", "1151515", "2185410", "20151552", "22151152", "2151511" };
       int[] sex = {1, 2, 1, 2, 1, 2};
       User user = null;
       List<User> users = null;

       System.out.println("---------addUser-------------");
       for(int i = 0;i<user_name.length;i++) {
user = new User(user_name[i], password[i], sex[i]);
           userInterfaceImplDao.addUser(user);
       }
}
}




Mybatis部分:

项目结构:

mapper总配置:

<configuration>
   <!-- 引用配置文件 -->
   <properties resource="jdbc.properties"/>
   <!-- 别名 -->
   <typeAliases>
       <typeAlias  alias="user" type="cn.summerwaves.domain.User"/>
   </typeAliases>
   <!-- 环境参数配置 -->
   <environments default="mysql">
       <environment id="mysql">
           <transactionManager type="JDBC"/>
           <dataSource type="POOLED">
               <property name="driver" value="${driver}"/>
               <property name="url" value="${url}"/>
               <property name="username" value="${username}"/>
               <property name="password" value="${password}"/>
           </dataSource>
       </environment>
   </environments>

   <!-- 具体的mapper文件地址 -->
   <mappers>
       <mapper resource="cn/summerwaves/mapper/UserMapper.xml"/>
   </mappers>
</configuration>

单独mapper配置:

<mapper namespace="cn.summerwaves.mapper.UserMapper">
   <insert id="saveUser" parameterType="user">
       INSERT INTO user(user_name,password,sex)VALUE (#{user_name},#{password},#{sex})
</insert>
</mapper>

Session工厂:

public class SWSessionFactory {
private static SqlSessionFactory sqlSessionFactory = null;

   static {
try {
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
           sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
       } catch (IOException e) {
e.printStackTrace();
       }
}

public static SqlSession getSqlSession() {
return sqlSessionFactory.openSession();
   }

public static SqlSessionFactory getSqlSessionFactory() {
return sqlSessionFactory;
   }
}

测试:

public class TestInsert {
public static void main(String[] args) throws Exception {
SqlSession session = SWSessionFactory.getSqlSession();
       User user = new User("wang","1215",1);
       session.insert("cn.summerwaves.mapper.UserMapper.saveUser", user);
       session.commit();
       session.close();
       System.out.println("addUser");

   }
}


明天计划的事情:

昨天和今天把Spring、JdbcTemplate、mybatis的配置方法又看了一下,自己写的时候遇到了问题,而且只是能连接数据库,还不知道怎么用这两个工具操作数据库,明天再好好看下吧,Junit也看下,争取可以写出今天没有能写出的测试方法


遇到的困难:

JdbcTemplate部分:

代码中和bean配置里的大小写不一致,后面仔细核对了才发现,浪费了很多时间


mybatis部分

遇到java.io.IOException: Could not find resource xxxx.xml异常报错

网上查到了方法,eclipse直接在所提示文件上右键buildpath,

intellij有三个方法,详细的在下方链接

http://blog.csdn.net/u010648555/article/details/70880425


收获:

虽然是按照别人的demo写的,但是从中学习到了如何用JdbcTemplate和Mybatis连接数据库的方法




返回列表 返回列表
评论

    分享到