发表于: 2017-12-08 20:26:09

1 758


今天完成的内容:

(1)回顾了下mybatis和jdbctemplate。

mybatis:

mybatis通过sqlsession接触数据库,而后者通过jdbctemplate接触。

创建sqlsession方法:(好像只有一种)

public SqlSession getSession() throws IOException {
String resource = "Configuration.xml";
   InputStream inputStream = Resources.getResourceAsStream(resource);
   SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
   SqlSession sqlSession = sqlSessionFactory.openSession();
   return sqlSession;
}

sqlsession类中封装了很多方法用于对数据库操作,选一条大概看一下原理,过程:

public void selectStudent() throws IOException{
SqlSession sqlSession = getSession();
   Student stu = sqlSession.selectOne("stu.selectStudent",28);
   System.out.println(stu);
   sqlSession.close();
}

首先是获取sqlsession对象,它本意是sql会话,mybatis是靠他操作数据的。

而后selectOne方法,官方解释:

public abstract T selectOne (String statement, Object parameter)

Retrieve a single row mapped from the statement key and parameter.

Parameters
statementUnique identifier matching the statement to use.
parameterA parameter object to pass to the statement.
Returns
  • Mapped object

statement是传入的sql语句,在mapper.xml中配置了,object parameter是传入该语句的参数。

理解能力有限,就是sqlsession可通过调用它自己的方法,这个方法需要传入sql语句和sql语句需要的参数(如果该sql语句需要参数)。

这只是查的方法,还有另外的方法,理解大概就行了,原理相似,追究太深意义不大,毕竟code博大精深。

mybatis关键配置文件config.xml:

需要配置的内容:

实体类

<typeAliases>
   <typeAlias alias="Student" type = "domain.Student"/>
</typeAliases>

数据源:

<environments default="development">
   <environment id="development">
       <transactionManager
               type="JDBC">
       </transactionManager>
       <dataSource type="POOLED">
           <property name="driver" value="com.mysql.jdbc.Driver"/>
           <property name="url" value="jdbc:mysql://localhost:3306/test1?characterEncoding=utf-8"/>
           <property name="username" value="root"/>
           <property name="password" value="0000"/>
       </dataSource>
   </environment>
</environments>

映射语句和接口:


<mappers>
   <mapper resource="mapper/StudentMapper.xml"/>
   <mapper class="mapper.IStudent"/>
</mappers>

映射语句正是mybatis强大之处,节省了大量JDBC代码,关于映射语句详情可查看:http://blog.csdn.net/zhll3377/article/details/8203440

jdbctemplate:

实体类不说,bean.xml中创建数据源和实现:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
   <!--数据库驱动-->
   <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
   <!--数据库连接的URL-->
   <property name="url" value="jdbc:mysql://localhost:3306/test1?characterEncoding=utf-8"/>
   <!--数据库连接的用户名-->
   <property name="username" value="root"/>
   <!--数据库连接的密码-->
   <property name="password" value="0000"/>
</bean>

<bean id="imp"
     class="org.springframework.jdbc.core.JdbcTemplate">
   <property name="dataSource"><ref bean="dataSource"/></property>
</bean>

dao实现类:

private DataSource dataSource;
private JdbcTemplate jdbcTemplateObject;

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

用set方法注入这两个bean,看下增加方法:

public void insertStudent( String name, long qq, String kind, long time, String school, long number, String link, String wish, String brother, long create_at){
String sql = "INSERT INTO task1(name,qq,kind,time,school,number,link,wish,brother,create_at)" +
" values(?,?,?,?,?,?,?,?,?,?)";
   jdbcTemplateObject.update(sql,name,qq,kind,time,school,number,link,wish,brother,create_at);

   return;
}

与sqlsession类似,jdbctemplate需要参数包括sql语句和字段,也不深究了。

明天的计划:准备小课堂。

收获:以上。



返回列表 返回列表
评论

    分享到