发表于: 2018-01-08 23:59:37

1 617




完成
1.通过Mybatis连接数据库
Mybatis的整体流程图
                                        
在mysql中新建表user[id,name,age]


新建User类,与db的表对应
package cn.wlj;

public class User {

public User( int id, String name,int age){
super();
           this.id = id;
           this.name = name;
           this.age = age;
       }

private int id;
       private String name;
       private int age;

       private int getID () {
return id;
       }
public void setID ( int id){
this.id = id;
       }

public String getName () {
return name;
       }
public void setName ( String name){
this.name = name;
       }

public int getAge () {
return age;
       }
public void setAge ( int age){
this.age = age;
       }

@Override
       public String toString () {
return "User [id=" + id + ",name=" + name + ",age=" + age + "]";
       }
}
配置文件conf.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>
   <!--
   development:开发模式
   work:工作模式
   -->
   <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/baomingtie?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=utf8" />
               <property name="username" value="root" />
               <property name="password" value="1234" />
               </dataSource>
           </environment>
       </environments>
   <mappers><!-- 在conf.xml文件中注册Mapper.xml文件和Mapper类 -->
   <mapper resource="userMapper.xml" />
   </mappers>
   </configuration>
新建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">
<!--
   为了使用mapper的标签,在此要在Window-Preference-Xml Catalog中配置mybatis-3-mapper.dtd,
   key=-//mybatis.org//DTD Mapper 3.0//EN
-->
<mapper namespace="userMapper">
   <select id="getUser" parameterType="int" resultType="cn.wlj.User">
       select * from users where id=#{id}
</select>

   <!-- 添加,参数是一个user对象 -->
   <insert id="addUser" parameterType="cn.wlj.User">
       insert into users(name,age) values(#{name},#{age})
</insert>

   <!-- 更新,参数是一个user对象 -->
   <insert id="updateUser" parameterType="cn.wlj.User">
       update users set name=#{name}, age=#{age} where id=#{id}
</insert>

   <!-- 添加,参数是一个user对象 -->
   <insert id="deleteUser" parameterType="int">
       delete from users where id=#{id}
</insert>

   <!-- 返回一个list,resultType="包名+类名":必须在类中有个无参的构造函数,不然会报错:
           java.lang.NoSuchMethodException: com.mlxs.mybatis.test1.User.<init>()
           Caused by: java.lang.NoSuchMethodException: com.mlxs.mybatis.test1.User.<init>()
           at java.lang.Class.getConstructor0(Class.java:2706)
           at java.lang.Class.getDeclaredConstructor(Class.java:1985)
           at org.apache.ibatis.reflection.factory.DefaultObjectFactory.instantiateClass(DefaultObjectFactory.java:57)
   -->
   <select id="selectALLUsers" resultType="cn.wlj.User">
       select * from users
</select>
</mapper>
添加测试类,获取一个user的信息
package cn.wlj;

import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class _Test1SelectOne {
public static void main(String[] args) throws IOException {
//加载mybatis的xml文件(同时加载关联的映射文件)
       //1.使用类加载器加载mybatis的配置文件
       //InputStream config = _Test1SelectOne.class.getClassLoader().getResourceAsStream("conf.xml");
       //2.使用mybatis的Resources类加载
       Reader config = Resources.getResourceAsReader("conf.xml");
       //创建sqlSessionFactory
       SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(config);
       //创建sqlSession,执行mapper.xml中的sql语句
       SqlSession sqlSession = sessionFactory.openSession();
       //执行映射文件中的sql(namespace + select的id)
       String sql = "userMapper.getUser";
       User user = sqlSession.selectOne(sql, 1);//查询id=1
       //关闭session
       sqlSession.close();
       System.out.println(user);
       }
}
结果如下,查询数据库成功


1). spring是什么?

Spring是一个开源的轻量级Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发。应用程序是由一组相互协作的对象组成。


2).Spring能帮我们做什么?
一.Spring能帮我们根据配置文件创建及组装对象之间的依赖关系。
二.Spring 面向切面编程能帮助我们无耦合的实现日志记录,性能统计,安全控制。
三、在传统应用程序当中,我们如何来完成数据库事务管理?需要一系列“获取连接,执行SQL,提交或回滚事务,关闭连接”,而且还要保证在最后一定要关闭连接,多么可怕的事情,而且也很无聊;如果采用Spring,我们只需获取连接,执行SQL,其他的都交给Spring来管理了,简单吧。所以,Spring能非常简单的帮我们管理数据库事务。
四、Spring还提供了与第三方数据访问框架(如Hibernate、JPA)无缝集成,而且自己也提供了一套JDBC访问模板,来方便数据库访问。
五、Spring还提供与第三方Web(如Struts、JSF)框架无缝集成,而且自己也提供了一套Spring MVC框架,来方便web层搭建。

六、Spring能方便的与Java EE(如Java Mail、任务调度)整合,与更多技术整合(比如缓存框架)。


3). 如何学好Spring
要学好Spring,首先要明确Spring是个什么东西,能帮我们做些什么事情,知道了这些然后做个简单的例子,这样就基本知道怎么使用Spring了。Spring核心是IoC容器,所以一定要透彻理解什么是IoC容器,以及如何配置及使用容器,其他所有技术都是基于容器实现的;理解好IoC后,接下来是面向切面编程,首先还是明确概念,基本配置,最后是实现原理,接下来就是数据库事务管理,其实Spring管理事务是通过面向切面编程实现的,所以基础很重要,IoC容器和面向切面编程搞定后,其余都是基于这俩东西的实现,学起来就更加轻松了。要学好Spring不能急,一定要把基础打牢,基础牢固了,这就是磨刀不误砍柴工。

计划
1.用spring中的JDBCtemplate连接数据库
2.Mybatis的增删改查用maven实现
3.继续学习spring

问题
1.mybatis的增删改查我用的是java项目,导致需要从外部导入许多jar,不能保证每个jar包都适合需求,浪费了不少时间。应当用maven项目来写,明天继续。
2.jdbctemplate连接数据库,我找的实例没有运行条件,导致最后需要spring跑测试,有难度。

收获
1.学习还是要以任务为主导,一个一个概念弄明白,弄清楚项目的逻辑,其他不重要的不要花太多时间。
2.还有,心态不要崩,吃顿饭就好了



返回列表 返回列表
评论

    分享到