发表于: 2017-12-28 20:52:12
2 577
今天完成的事情:今天仔细学了一些关于spring的知识,然后大致完成了mybatis的注解模式。
首先新建一个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容器。
进度:完成了任务后的一点内容,还行吧,慢慢积累基础。
评论