发表于: 2016-10-14 00:21:36

16 2591


最近看spring boot ,中文文档较少,英文一般,卡住了,来试试修真院的任务


任务1:完成学员报名的DB设计并读写数据库立即学习

                   参考线上学员报名填写的资料,设计数据库,

                    数据库要有三个基本的字段,ID(自增Long),create_at,update_at(所有的时间都用Long)。

                    搭建本地JDK(7)和Maven(3)环境,使用Eclipse或者是Idea创建Maven项目。

                    编写Junit,使用Mybatis读写数据库。

                    单元测试通过。

准备工作:

      1.开发环境:JDK8,Maven3,IDEA

      2.任务分析: 参考学员报名填写的资料简单设计这么几个字段:

                           id(mediumint自增),username(varchar),qq(varchar),

                          预计入学时间forsee_day(date),修真类型career(varchar),毕业院校school(varchar),日报链接report_link(varchar),

                          立愿wish(varchar)

                          create_at(long),update_at(long)

任务开始:

1.建立数据库tb_barrier(意思就是为IT修真院建个数据库,不会翻译,barrier是关卡,障碍物的意思,寓意一下)


2.建立表结构如下:                          

CREATE TABLE tb_user (
id  MEDIUMINT  PRIMARY KEY AUTO_INCREMENT ,
qq VARCHAR(10),
career   VARCHAR(10)
CHECK ('前端工程师''Android工程师''IOS工程师''Java工程师''运维工程师''产品经理''UI设计师'),
forsee_day VARCHAR(10),
school VARCHAR(25),
online_no INT,
report_link VARCHAR(50),
wish VARCHAR(100),
create_at LONG,
update_at LONG,
username VARCHAR(10)
);

  建立两个触发器:

  (1)在插入用户时为用户插入创建时间

CREATE TRIGGER bi_user
BEFORE INSERT
 ON tb_user FOR EACH ROW
 BEGIN
    set NEW.create_at = sysdate();
END;

  (2)在更新用户时插入更新时间

CREATE TRIGGER bu_user
BEFORE UPDATE
 ON tb_user FOR EACH ROW
 BEGIN
    set NEW.update_at = sysdate();
END;

3.搞定Maven依赖,配置包结构,以及Mybatis配置文件

  (1)Maven依赖:含Mybatis和数据库驱动

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.0</version>
</dependency>

  (2)包结构

  (3)配置文件MyBatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN"
       "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="environment">
<environment id="environment">
<!--配置JDBC-->
           <transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url"
                         value="jdbc:mysql://localhost:3306/it_barrier?characterEncoding =UTF-8" />
<property name="username" value="root" />
<property name="password" value="" />
</dataSource>
</environment>
</environments>
<!--<mappers>-->
       <!--<mapper class="dao.UserDao"/>-->
   <!--</mappers>-->
</configuration>


4.开发User POJO

class User {
var id:Int = 0
   var username: String = ""
   var qq: String = ""
   var career: String = ""
   var foreseeDay: String = ""
   var school:String = ""
   var onlineNo: Int = 0
   var reportLink: String = ""
   var wish: String = ""


   constructor()
constructor(username: String, qq: String, career: String, foreseeDay: String, school: String, onlineNo: Int, reportLink: String, wish: String) {
this.username = username
this.qq = qq
this.career = career
this.foreseeDay = foreseeDay
this.school = school
this.onlineNo = onlineNo
this.reportLink = reportLink
this.wish = wish
}

override fun toString(): String{
return "User(username='$username', qq='$qq', career='$career', foreseeDay='$foreseeDay', school='$school', onlineNo=$onlineNo, reportLink='$reportLink', wish='$wish')"
   }
}


5.开发UserDao映射接口并在配置文件中配置Mapper(略去删除方法)

public interface UserDao {
//插入新用户并获取主键
   @Insert("insert into tb_user (qq,career,foresee_day,school,online_no,report_link,wish,username)" +
"values(#{qq},#{career},#{foreseeDay},#{school},#{onlineNo},#{reportLink},#{wish},#{username})")
@Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
int addUser(User user);

//更新用户数据,需要在上一层传入要更改字段
   @Update("update tb_user set ${field} = #{value} where id = #{id}")
int updateUser(@Param("field") String field, @Param("value") String value, @Param("id") int id);

//按字段查询用户,按用户名查询,按qq查询
   @Select("select *  from tb_user where ${field} = #{value}")
@Results({
@Result(column = "foresee_day",property = "foreseeDay"),
@Result(column = "report_link",property = "reportLink"),
@Result(column = "online_no",property = "onlineNo")
})
User findUserBy(@Param("field") String field, @Param("value") String value);

//按id查询用户
   @Select("select  * from tb_user where id=#{id}")
@Results({
@Result(column = "foresee_day",property = "foreseeDay"),
@Result(column = "report_link",property = "reportLink"),
@Result(column = "online_no",property = "onlineNo")
})
User findUserById(int id);

//查找所有用户
   @Select("select * from tb_user")
@Results({
@Result(column = "foresee_day",property = "foreseeDay"),
@Result(column = "report_link",property = "reportLink"),
@Result(column = "online_no",property = "onlineNo")
})
List<User> findAllUsers();
}

在配置文件中添加

<mappers>
<mapper class="dao.UserDao"/>
</mappers>

6.编写测试

public class TestUserDao {

@Test
   public void testCURDUser() {
//获取sqlSession
       SqlSession sqlSession = MyBatisUtils.getSqlSession();
//获得Mybatis自动生成的接口实现
       UserDao userDao = sqlSession.getMapper(UserDao.class);

//建立一个用户实例
       User user = new User();
user.setUsername("杨百顺");
user.setQq("88888");
user.setCareer("Java工程师");
user.setForeseeDay("2016-09-01");
user.setSchool("南京耶鸡大学");
user.setOnlineNo(165);
user.setReportLink("http://user.report");
user.setWish("消灭人类暴政,世界属于三体");

//测试添加方法,通过
       //testAddUser(userDao,user);

       //测试更新方法,通过
       //testUpdateUser(userDao,"qq","123456",7);

       //测试查询单个用户方法,通过
       User user1 = userDao.findUserBy("qq","123456");
System.out.println(user1);

//测试查询单个用户方法(通过id查询),通过
       User user2 = userDao.findUserById(7);
System.out.println(user1);

//测试查询所有用户方法,通过
       List<User> users = userDao.findAllUsers();
System.out.println(users);

//提交对数据库的操作
       sqlSession.commit();
//关闭资源
       sqlSession.close();
}

private void testUpdateUser(UserDao userDao,String filed, String value, int id) {
int res = userDao.updateUser(filed,value,id);
System.out.println("更新了"+res+"条数据");
}


public void testAddUser(UserDao userDao,User user) {
//向数据库中添加用户记录并打印是否成功
       int res = userDao.addUser(user);
System.out.println("插入记录条数:"+res);
//获取到主键
       System.out.println("该用户在数据库中唯一ID为:"+user.getId());
}
}


7.暂不git,收工(不git不能提交?git密码忘了。。。。随便写个地址给过吗?)写的太粗陋,求喷,有问题请指教,第一次写日报不太懂。



返回列表 返回列表
评论

    分享到