发表于: 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&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收获
冷静下来思考特别重要
评论