发表于: 2017-12-28 20:52:12

2 577


今天完成的事情:今天仔细学了一些关于spring的知识,然后大致完成了mybatis的注解模式。

关于Annotation的运用

首先新建一个maven项目,

然后在pom中建立相关的依赖,依赖包的齐全很重要。

新建一个对应数据库的实体类。

在resource文件夹下新建关于mybatis的配置文件,写入一下代码:

<?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>

    <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/school?" />

                <property name="username" value="root" />

                <property name="password" value="lucifer" />

            </dataSource>

        </environment>

    </environments>

</configuration>

在创建了配置文件后,

为实体类创建相关的数据库链接类,记得在该类中,加载上面的数据库配置文件

代码如下:


import java.io.IOException;
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 DbHelper {
private static DbHelper dbHelper=null;
private static SqlSessionFactory sqlSessionFactory=null;
private DbHelper(){
String resource = "MyBatis-Configuration.xml";
       Reader reader;
try {
           reader = Resources.getResourceAsReader(resource);
sqlSessionFactory =new SqlSessionFactoryBuilder().build(reader);
sqlSessionFactory.getConfiguration().addMapper(UserDao.class);
       } catch (IOException e) {
           e.printStackTrace();
       }
   }
public SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
   }
public static DbHelper getInstance(){
if(dbHelper==null)
dbHelper = new DbHelper();
return dbHelper;
   }
}

创建好数据库链接类之后,就可以编写实体类的DAO了。

而这里就是Annotation的精髓,在dao类中,可以利用注解,在dao的方法上写上相关的sql语句,之后就可以在其他的地方直接调用相关方法而省去了很多事情。

import java.util.List;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

public interface UserDao {
@Insert("insert into users(userName,password,comment) values(#{userName},#{password},#{comment})")
public int insert(User user);

@Update("update users set userName=#{userName},password=#{password},comment=#{comment} where userName=#{userName}")
public int update(User user);

@Delete("delete from users where userName=#{userName}")
public int delete(String userName);

@Select("select * from users order by userName asc")
public List<User> selectAll();

@Select("select count(*) c from users;")
public int countAll();

@Select("select * from users where userName=#{userName}")
public User findByUserName(String userName);
}

实体类代码如下:

    private int userId;
private String userName;
private String password;
private String comment;
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getComment() {
return comment;
}
public void setComment(String comment) {
this.comment = comment;
}
}

主函数如下:

SqlSession session = DbHelper.getInstance().getSqlSession();
UserDao userDao = session.getMapper(UserDao.class);
User user = new User();
user.setUserName("hongye");
user.setPassword("123456");

user.setComment("大明王朝");

//这里增加记录

userDao.insert(user);
System.out.println("记录条数:" + userDao.countAll());
//这里查询记录
List<User> users = userDao.selectAll();
Iterator<User> iter = users.iterator();
while (iter.hasNext()) {
User u = iter.next();
System.out.println("用户名: " + u.getUserName() + "密码: " + u.getPassword()+"备注: "+u.getComment());

}

user.setComment("comment");
//这里更新记录
userDao.update(user);
User u = userDao.findByUserName("hongye");
System.out.println(u.getComment());
//这里删除记录
userDao.delete("hongye");
System.out.println("记录条数:" + userDao.countAll());
session.commit();
session.close();

数据库相关语句如下:数据库并没有写入记录。

create database school;

use school;

CREATE TABLE User (

userId  bigint(20) NOT NULL AUTO_INCREMENT ,

userName  varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,

password  varchar(80) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,

comment  varchar(250) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,

PRIMARY KEY (userId),

UNIQUE INDEX UQ_User_userName (userName) USING BTREE

);

而程序运行结果如下:

记录条数:3

用户名: hongye 密码: 123456 备注: 大明王朝

用户名: 无心法师 密码: 血玲珑 备注: comment

用户名: 血滴子 密码: 太上皇 备注: comment

comment

记录条数:2

明天计划的事情:(一定要写非常细致的内容)

遇到的问题:

1.运行代码时报错:Caused by: org.xml.sax.SAXParseException; lineNumber: 5; columnNumber: 71; cvc-elt.1.a: 找不到元素 'beans' 的声明。

<!--这两个文件存在版本差异,差异代码如下:
A.xml

http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
B.xml

http://www.springframework.org/shcema/beans/spring-beans.xsd“-->


收获:

1.脚踏实地,放下心来,不需要考虑什么,好好把握眼前。


2.在Spring中可以不需要配置文件,只需要引入依赖,然后可以将一个类设置为@Configuration,并将其中的方法注册为@Bean的方式制作Spring容器。


进度:完成了任务后的一点内容,还行吧,慢慢积累基础。



返回列表 返回列表
评论

    分享到