发表于: 2020-01-05 23:52:23

1 1141


今日完成任务:

完成了第17步,代码如下(感谢师兄的帮助,看了你很多的资料)师弟师妹们,我的代码可以拿走看有不懂的可以私信我

package com.mybatisdays.dao;
import com.mybatisdays.Student;
import java.util.List;
import java.util.Map;

public interface StudentInterfaceDao {
public List<Map<String,Object>> findStudents(String name);
   public List<Map<String,Object>> mapFindStudents(Student student);
   public void  insertStudent(Student student);
   public void updateStudent(Student student);
   public void deleteId(int id);
   public Map<String,Object> selectStudent(int id);
   public List<Map<String,Object>> selectStudents();
   public void insertStudents(List<Object[]> student);
}
package com.mybatisdays.dao;
import com.mybatisdays.Student;
import java.util.List;
import java.util.Map;
public interface StudentInterfaceMapper {
public List<Student> findStudents(String name);
   public List<Student> mapFindStudents(Student student);
   public void  insertStudent(Student student);
   public void updateStudent(Student student);
   public void deleteId(int id);
   public Student selectStudent(int id);
   public List<Student> selectStudents();
 //  public void insertStudents(List<Object> student);
}
package com.mybatisdays.domain;

import com.mybatisdays.Student;
import com.mybatisdays.dao.StudentInterfaceDao;
import javafx.beans.binding.ObjectExpression;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;

import java.util.List;
import java.util.Map;
import java.util.Objects;

public class StudentInterfaceImplDao implements StudentInterfaceDao {
private JdbcTemplate jdbcTemplate = null;
   private ApplicationContext context = null;
   //初始化连接池
   {
context = new ClassPathXmlApplicationContext("applicationContext.xml");
       jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");

   }
//单条插入
   @Override
   public  void insertStudent(Student student){
String sql1 = "insert into student values(?,?,?,?,?,?,?,?,?,?,?,?,?)";
       jdbcTemplate.update(sql1,student.getId(),student.getCreate_at(),student.getUpdate_at(),student.getName(),student.getQQ(),
               student.getType_job(),student.getDate(),student.getSchool(),student.getNumber_online(),student.getDaily(),student.getDream(),
              student.getBrother(), student.getWhere_know());

   }
@Override
   //多条插入
   public void insertStudents(List<Object[]> batchStudent){
String sql2 = " insert into student values(?,?,?,?,?,?,?,?,?,?,?,?,?)";
       jdbcTemplate.batchUpdate(sql2,(List<Object[]>) batchStudent);

   }
@Override
   //单条更新
   public void updateStudent(Student student){
String sql3 = "update student set name = ? where id = ?";
       jdbcTemplate.update(sql3,student.getName(),student.getId());
   }
@Override
   //单条删除
   public void deleteId(int id){
String sql4 = "delete from student where id = ?";
       jdbcTemplate.update(sql4,id);
   }
@Override
   //单条查询
   public Map<String ,Object> selectStudent(int id){
String sql5 = "select name,school,Type_job as  \"工程师\" from student where id = ?";
       Map<String ,Object> map = jdbcTemplate.queryForMap(sql5,id);
       return map;
   }
@Override
   //全部查询
  public List<Map<String,Object>> selectStudents(){
String sql6 = "select * from student";
       List<Map<String, Object>> list = jdbcTemplate.queryForList(sql6);
       return list;
   }
@Override
   //单条件模糊查询
   public  List<Map<String,Object>> findStudents(String name){
String sql7 = "select * from student where name like concat('%',?,'%')";
       List<Map<String, Object>> list = jdbcTemplate.queryForList(sql7,name);
       return list;
   }
@Override
   //多条件模糊查询
   public List<Map<String,Object>> mapFindStudents(Student student){
String sql8 = "select * from student where id > ? and name like concat('%',?,'%')";
       List<Map<String, Object>> list = jdbcTemplate.queryForList(sql8,student.getId(),student.getName());
       return list;
   }

}
package com.mybatisdays;

import java.sql.Time;
import java.sql.Timestamp;
//编写实体类
public class Student {
private Integer id;
   private Timestamp create_at;
   private Timestamp update_at;
   private  String name;
   private Integer QQ;
   private  String type_job;
   private  String date;
   private  String school;
   private Integer number_online;
   private  String daily;
   private String dream;
   private String brother;
   private String where_know;

   public Student(Integer id, Timestamp create_at, Timestamp update_at, String name, Integer QQ, String type_job, String date, String school, Integer number_online, String daily, String dream, String brother, String where_know) {
this.id = id;
       this.create_at = create_at;
       this.update_at = update_at;
       this.name = name;
       this.QQ = QQ;
       this.type_job = type_job;
       this.date = date;
       this.school = school;
       this.number_online = number_online;
       this.daily = daily;
       this.dream = dream;
       this.brother = brother;
       this.where_know = where_know;
   }

public Integer getId() {
return id;
   }

public void setId(Integer id) {
this.id = id;
   }

public Timestamp getCreate_at() {
return create_at;
   }

public void setCreate_at(Timestamp create_at) {
this.create_at = create_at;
   }

public Timestamp getUpdate_at() {
return update_at;
   }

public void setUpdate_at(Timestamp update_at) {
this.update_at = update_at;
   }

public String getName() {
return name;
   }

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

public Integer getQQ() {
return QQ;
   }

public void setQQ(Integer QQ) {
this.QQ = QQ;
   }

public String getType_job() {
return type_job;
   }

public void setType_job(String type_job) {
this.type_job = type_job;
   }

public String getDate() {
return date;
   }

public void setDate(String date) {
this.date = date;
   }

public String getSchool() {
return school;
   }

public void setSchool(String school) {
this.school = school;
   }

public Integer getNumber_online() {
return number_online;
   }

public void setNumber_online(Integer number_online) {
this.number_online = number_online;
   }

public String getDaily() {
return daily;
   }

public void setDaily(String daily) {
this.daily = daily;
   }

public String getDream() {
return dream;
   }

public void setDream(String dream) {
this.dream = dream;
   }

public String getBrother() {
return brother;
   }

public void setBrother(String brother) {
this.brother = brother;
   }

public String getWhere_know() {
return where_know;
   }

public void setWhere_know(String where_know) {
this.where_know = where_know;
   }
public Student() {
}

@Override
   public String toString() {
return "Student{" +
"id=" + id +
", create_at=" + create_at +
", update_at=" + update_at +
", name='" + name + '\'' +
", QQ=" + QQ +
", type_job='" + type_job + '\'' +
", date='" + date + '\'' +
", school='" + school + '\'' +
", number_online=" + number_online +
", daily='" + daily + '\'' +
", dream='" + dream + '\'' +
", brother='" + brother + '\'' +
", where_know='" + where_know + '\'' +
'}';
   }
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:context="http://www.springframework.org/schema/context"
      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd ">
   <context:property-placeholder location="classpath:db.properties"/>
  <bean id="dataSource"
             class="com.mchange.v2.c3p0.ComboPooledDataSource">
       <property name="user" value="${jdbc.user}"></property>
       <property name="password" value="${jdbc.password}"></property>
       <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
       <property name="driverClass" value="${jdbc.driverClass}"></property>

       <property name="initialPoolSize" value="${jdbc.initPoolSize}"></property>
       <property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property>

   </bean>
   <!--配置spring的jdbc_template,并注入一个datasource数据源 -->
   <bean id="jdbcTemplate"
         class="org.springframework.jdbc.core.JdbcTemplate">
       <property name="dataSource" ref="dataSource"></property>

   </bean>
</beans>
jdbc.user=root
jdbc.password=a19930905
jdbc.driverClass=com.mysql.cj.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql://localhost:3306/xiuzhenyuan?serverTimezone=GMT&characterEncoding=utf8

jdbc.initPoolSize=5
jdbc.maxPoolSize=10

initialPoolSize:初始化连接数量
minPoolSize:最小连接数量
maxPoolSize=最大连接数量
acquireIncrement:当连接池用完之后一次性获取的连接数量
idleConnectionTestPeriod:根据一定时间间隔检查连接池的连接数量 单位为秒
maxIdleTime:最大空闲时间 单位为秒
maxStatements:最大的statement连接数量
maxStatementPerConnection:最大语句缓存
<?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"></transactionManager>

           <dataSource type="POOLED">
               <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
               <property name="url" value="jdbc:mysql://localhost:3306/xiuzhenyuan?serverTimezone=GMT&amp;characterEncoding=utf8"/>
               <property name="username" value="root"/>
               <property name="password" value="a19930905"/>
           </dataSource>
       </environment>
   </environments>
   <mappers>
       <!--扫描mybatis的实现,可以扫描多个xml文件-->
       <mapper resource="MybatisMap01.xml"></mapper>
       <!--
       <mapper resource="UserMapper.xml"></mapper>
       -->
   </mappers>
</configuration>
<?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">

<!-- 根据id 查询
id:statement的id,要求命名空间的唯一
parameterType:入参的java类型
resultType:查询出单条结果集对应的java类型
#{}:表示一个占位符
#{id}表示该占位符等待接收参数的名称为id
注意:如果参数为简单类型时,#{}里面的参数名称可以是任何定义-->


<mapper namespace="com.mybatisdays.dao.StudentInterfaceMapper">
   <!--添加数据,一条-->
   <insert id="insertStudent" parameterType="com.mybatisdays.Student">
       insert into student values(#{id},#{create_at},#{update_at},#{name},#{QQ},#{type_job},#{date},
#{school},#{number_online},#{daily},#{dream},#{brother},#{where_know})
</insert>
   <!--精确查询-->
   <select id="selectStudent" parameterType="int" resultType="com.mybatisdays.Student">
       select * from student where id = #{id}
</select>
   <!--更新一条数据-->
   <select id="updateStudent" parameterType="com.mybatisdays.Student">
       update student set name = #{name},type_job = #{type_job} where id = #{id}
</select>
   <!--删除一条数据-->
   <select id="deleteId" parameterType="int">
       delete from student where id = #{id}
</select>
   <!--模糊查询-->
   <select id="findStudents" parameterType="String" resultType="com.mybatisdays.Student">
       select * from student where name like concat('%',#{name},'%')
</select>
   <!--多条模糊查询-->
   <select id="mapFindStudents" parameterType="com.mybatisdays.Student" resultType="com.mybatisdays.Student">
       select * from student where id>#{id} and name like concat('%',#{name},'%')
</select>
   <!--全部查询-->
   <select id="selectStudents" resultType="com.mybatisdays.Student">
       select * from student
</select>

</mapper
package com.mybatisdays;

import com.mybatisdays.dao.StudentInterfaceDao;
import com.mybatisdays.domain.StudentInterfaceImplDao;
import org.junit.Test;

import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class DaoTest {
StudentInterfaceDao dao = new StudentInterfaceImplDao();
  @Test
   //批量插入
   public void test1() {
List<Object[]> batchStudent = new ArrayList<>();
      batchStudent.add(new Object[]{null, "2019-07-09 10:10:10", "2019-08-09 11:11:11","深山普", 1234567, "无线能量科学家", 20190203, "香港理工大学", 1186, "能量传输称霸6G网", "称为优秀科学家", "布鲁诺", "随便申请"});
      batchStudent.add(new Object[]{null, "2019-07-09 10:10:10", "2019-08-09 11:11:11","国振刚", 3234567, "信号分离科学家", 20190110, "西北工业大学", 1286, "物联网称霸6G网", "称为优秀企业家", "布鲁诺和代为", "奖学金"});
      dao.insertStudents(batchStudent);
   }
@Test
   //单条插入
   public void test2(){
Student student = new Student();
      student.setId(15);
      student.setCreate_at(Timestamp.valueOf("2019-09-01 10:11:12"));
      student.setUpdate_at(Timestamp.valueOf("2019-09-01 10:11:12"));
      student.setName("郭傻逼");
      student.setQQ(2345642);
      student.setType_job("连环池化饭");
      student.setDate("20180101");
      student.setSchool("南京理工功大学");
      student.setNumber_online(1233);
      student.setDaily("早日成仙");
      student.setDream("法力无边");
      student.setBrother("贾乃亮");
      student.setWhere_know("朋友推荐");
      dao.insertStudent(student);
   }
@Test
   //单条查询
   public void test3(){
Map<String,Object> map = dao.selectStudent(15);
       System.out.println(map);
   }
@Test
   //全部查询
   public void test4(){
List< Map<String,Object>> list = dao.selectStudents();
      for(Map<String,Object> l:list){
System.out.println(l);
      }
}
@Test
   //单条更新
   public void test5(){
Student student = new Student();
      student.setName("郭聪明");
      student.setId(15);
      dao.updateStudent(student);
   }
@Test
   //单条删除
   public void test6(){
dao.deleteId(14);
   }
@Test
   //单条件模糊查询
   public void test7(){
List<Map<String,Object>> list = dao.findStudents("国");
       for(Map<String,Object> l:list){
System.out.println(l);
       }
}
@Test
   //多条件模糊查询
   public  void  test8(){
Student student = new Student();
       student.setId(5);
       student.setName("国");
       List<Map<String,Object>> list = dao.mapFindStudents(student);
       for(Map<String,Object> l:list){
System.out.println(l);
       }
}
}
package com.mybatisdays;

import com.mybatisdays.dao.StudentInterfaceMapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Timestamp;
import java.util.*;

public class MapperTest {
//    使用工厂SqlSession生产对象
   SqlSession session;
   StudentInterfaceMapper studentMapper;
   @Before
   public void before() throws IOException {
System.out.println("before......获取session");
       // 读取配置文件
       InputStream iS = Resources.getResourceAsStream("mybatisConfig.xml");
       // 通过SqlSessionFactoryBuilder创建SqlSessionFactory会话工厂
       SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(iS);
       session = sessionFactory.openSession();
   }
@After
   public void after(){
session.close();
       System.out.println("after......连接关闭");
   }
@Test
   public void test01(){
//添加一条信息
       //      使用SqlSession创建dao接口的代理对象
       studentMapper = session.getMapper(StudentInterfaceMapper.class);
       Student student1 = new Student(null,Timestamp.valueOf("2019-07-09 10:10:10"),
       Timestamp.valueOf("2019-09-09 13:13:14"), "中国队",666666,
               "JAVA工程师", "2019-07-12",    "NBA职业技术学院",8888,
               "看到洛杉矶凌晨四点的太阳","世界杯冠军","无","央视");
       Student student2 = new Student( null,Timestamp.valueOf("2019-07-09 10:10:10"),Timestamp.valueOf("2019-09-09 13:13:14"),"美国队",123456,"乒乓球",
               "2019-09-09","氰化物倒楼技术学院",1324,"每天进步一点","活在当下","孙悟空","" +
"58同城");
       studentMapper.insertStudent(student1);
       studentMapper.insertStudent(student2);
       session.commit();
   }
@Test
   public  void test02(){
//精确查询一条信息
       studentMapper = session.getMapper(StudentInterfaceMapper.class);
       Student stu = studentMapper.selectStudent(12);
       System.out.println(stu);
       session.commit();
   }
@Test
   public  void test03(){
//更新一条信息
       studentMapper = session.getMapper(StudentInterfaceMapper.class);
       Student stu = new Student();
       stu.setName("沈善普");
       stu.setType_job("加学科");
       stu.setId(3);
       studentMapper.updateStudent(stu);
       session.commit();
   }
@Test
   public void test04(){
//删除一条数据
       studentMapper = session.getMapper( StudentInterfaceMapper.class);
       studentMapper.deleteId(3);
       session.commit();
   }
@Test
   public void test05(){
//模糊查询
       studentMapper = session.getMapper(StudentInterfaceMapper.class);
       List<Student> stu = studentMapper.findStudents("国");
       for(Student l:stu){
System.out.println(l);
       }
session.commit();

   }
@Test
   public  void test06(){
//全部查询
       studentMapper = session.getMapper(StudentInterfaceMapper.class);
       List<Student> stu = studentMapper.selectStudents();
       for(Student l:stu){
System.out.println(l);
       }
session.commit();

   }
@Test
   public void test07(){
//多条查询成功
       studentMapper = session.getMapper(StudentInterfaceMapper.class);
       Student stu = new Student();
       stu.setId(4);
       stu.setName("国");
       List<Student> l = studentMapper.mapFindStudents(stu);
       for(Student L:l){
System.out.println(L);
       }
session.commit();




   }
}

2.今日遇到问题

多条件模糊查询和单条件模糊查询的sql在xml文件编写和dao实现类编写有所不同,最终解决实现!!!

3.明天计划的事

进行步骤18

4收获

冷静下来思考特别重要


返回列表 返回列表
评论

    分享到