当前位置: 首页> 汽车> 时评 > 不用备案的域名_万网封停慧聪网_搜索引擎论文3000字_免费外链代发

不用备案的域名_万网封停慧聪网_搜索引擎论文3000字_免费外链代发

时间:2025/8/27 10:59:55来源:https://blog.csdn.net/jlihan/article/details/144008957 浏览次数: 0次
不用备案的域名_万网封停慧聪网_搜索引擎论文3000字_免费外链代发

目录

第一章:代理Dao方式的CRUD操作

1. 代理Dao方式的增删改查

1.创建maven的java项目

2.UserMapper接口代码

3.UserTest的代码

4.UserMapper.xml的配置文件代码

5.模糊查询符号使用的区别

第二章:MyBatis参数详解

1. parameterType

2. resultType

第三章:SqlMapConfig.xml配置文件

1.在项目中定义jdbc.properties属性文件,存储数据库的相关的信息,统一管理。

2. 类型别名定义


 

第一章:代理Dao方式的CRUD操作

1. 代理Dao方式的增删改查

1.创建maven的java项目

2.UserMapper接口代码

package com.qcby.mapper;import com.qcby.domain.User;import java.util.List;public interface UserMapper {/*** 查询所有* @return*/public List<User> findAll();/*** 通过id更新数据* @param userId* @return*/public User findById(Integer userId);/*** 添加数据* @param user*/public void insert(User user);/*** 通过id更新数据* @param user*/public void update(User user);/*** 通过id删除数据* @param userId*/public void delete(Integer userId);/*** 通过名称来模糊查找* @param username* @return*/public List<User> findByName(String username);/*** 统计总数据个数* @return*/public Integer findByCount();
}

3.UserTest的代码

package com.qcby.mapper;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;import com.qcby.domain.User;
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 org.omg.CORBA.PUBLIC_MEMBER;public class UserTest {private InputStream in;private SqlSession session;private UserMapper mapper;@Beforepublic void init() throws Exception{//加载配置文件in = Resources.getResourceAsStream("SqlMapConfig.xml");// 创建工厂对象SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);// 创建Session对象session = factory.openSession();// 获取到代理对象mapper = session.getMapper(UserMapper.class);}@Afterpublic void destory() throws IOException {in.close();session.close();}/*** 测试查询所有的方法* @throws Exception*/@Testpublic void testFindAll() throws Exception{List<User> list = mapper.findAll();//遍历for (User user : list) {System.out.println(user);}in.close();}/*** 添加* @throws Exception*/@Testpublic void testInsert() throws Exception{User user = new User();user.setUsername("美美");user.setBirthday(new Date());user.setSex("女");user.setAddress("保定");mapper.insert(user);session.commit();System.out.println(user.getId());}/***通过id查找数据并更新数据    使用了两个sql语句* @throws Exception*/@Testpublic void testUpdate() throws Exception {User user = mapper.findById(4);user.setUsername("小凤");mapper.update(user);session.commit();}/*** 通过id删除数据* @throws Exception*/@Testpublic void testDelete() throws Exception {mapper.delete(5);session.commit();}/*** 模糊查找* @throws Exception*/// 第一种@Testpublic void testFindByName() throws Exception{List<User> list = mapper.findByName("%王%");for(User user:list){System.out.println(user);}}// 第二种/*@Testpublic void testFindByName() throws Exception{List<User> list = mapper.findByName("王");for(User user:list){System.out.println(user);}}*//*** 统计总数据个数* @throws Exception*/@Testpublic void testFindByCount() throws Exception {Integer count = mapper.findByCount();System.out.println("总记录数:"+count);}
}

4.UserMapper.xml的配置文件代码

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qcby.mapper.UserMapper"><!--namespace 叫做名称空间,表明以后查找UserMapper接口中的findAll的方法--><!--select id="findAll" 中的id属性编写为UserMapper接口方法的名称resultType 表示findAll方法的返回值类型--><select id="findAll" resultType="com.qcby.domain.User">select * from user;</select><!--通过id查询SQL语句使用#{占位符的名称,名称可以任意},仅限于基本数据类型和String类型--><select id="findById" resultType="com.qcby.domain.User" parameterType="int">select * from user where id = #{id};</select><!-- 保存操作 --><insert id="insert" parameterType="com.qcby.domain.User">/*keyProperty表示要返回的属性名称order取值AFTER表示插入数据后的行为resultType表示返回值的类型*/<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">select last_insert_id();</selectKey>insert into user (username,birthday,sex,address) values (#{username},#{birthday},#{sex},#{address})</insert><!-- 通过id来修改 --><update id="update" parameterType="com.qcby.domain.User">update user set username = #{username},birthday = #{birthday},sex = #{sex},address= #{address} where id= #{id}</update><!-- 删除 --><delete id="delete" parameterType="Integer">delete from user where id = #{id}</delete><!-- 模糊查询 --><select id="findByName" resultType="com.qcby.domain.User" parameterType="string"><!-- 第一种方式的SQL语句 -->select * from user where username  like #{username}<!-- 第二章SQL语句的编写 强调:'%${value}%'不能修改,固定写法(不推荐使用)select * from user where username like '%${value}%'--></select><!-- 具体函数的查询 --><select id="findByCount" resultType="int">select count(*) from user</select></mapper>
<!-- 保存操作 -->
<insert id="insert" parameterType="com.qcby.domain.User">/*keyProperty表示要返回的属性名称order取值AFTER表示插入数据后的行为resultType表示返回值的类型*/<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">select last_insert_id();</selectKey>insert into user (username,birthday,sex,address) values (#{username},#{birthday},#{sex},#{address})
</insert>

保存操作解释

<selectKey>标签用于在插入数据后获取自增主键的值

比如在一个数据库中,我新添加了一条数据,如果想知道新添加的数据的id,有两种方法

1.传统方法 再写一条查询id的sql语句,但是如果数据足够多,且有重复部分,如通过名称查询,相同名称的数据有很多条(不建议)

2.通过<selectKey>标签并使用select last_insert_id() 在执行完插入数据的sql语句后获取插入的记录的主键ID

/*

keyProperty表示要返回的属性名称

order取值AFTER表示插入数据后的行为

resultType表示返回值的类型

*/

5.模糊查询符号使用的区别

        #{}:通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换,#{}可以有效防止sql注入 #{}可以接收简单类型值或pojo属性值。 如果parameterType传输单个简单类型值,#{}括号中可以是value或其它名称。

        ${}:通过$可以将传入的内容拼接在中且不进行类型转换,${}可以将parameterType 传入的内容拼接在sql中且不进行jdbc类型转换, ${}可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,${}括号中只能是value。

第二章:MyBatis参数详解

1. parameterType

用于指定映射 SQL 语句时,传入参数的类型

parameterType 的常见值

  • 简单类型:如 String, Integer, int, long, double, boolean 等。
  • Java 对象:如 com.example.User 或其他 Java 类。
  • Map:如果你需要传递多个参数,可以使用 Map 或 @Param 注解。
  • 集合类型:如 List 或 Array,可以用来传递多个相同类型的参数。简单数据类型

1.简单数据类型

int double类型 String类型 long

简单的写法:java.lang.Integer --> int integer Int Integer 都可以,框架提供简写的方式。

//简单数据类型查询
User findById(int id);
<!-- 使用简单数据类型int查询-->
<!--<select id="findById" resultType="com.qcby.domain.User" parameterType="int">select * from user where id = #{id};
</select>--><select id="findById" resultType="com.qcby.domain.User" parameterType="java.lang.Integer">select * from user where id = #{id};
</select>

测试

/*** 使用简单数据类型int作为参数* @throws Exception*/
@Test
public void findByIdTest() throws Exception{User user = mapper.findById(1);System.out.println(user);
}

2.POJO(JavaBean实体类)对象类型,默认是不能简写,可以配置。

User对象

//通过对象查询用户id
Integer findIdByUser(User user);
select id="findIdByUser" parameterType="com.qcby.domain.User" resultType="java.lang.Integer">select id from user where username = #{username} and sex = #{sex}
</select>
@Test
public void findIdByUserTest() throws Exception{User user = new User();user.setUsername("熊大");user.setSex("女");Integer idByUser = mapper.findIdByUser(user);System.out.println("User id:"+idByUser);
}

3.POJO包装对象类型

包含更多的实体类

package com.qcby.domain;import javax.management.relation.Role;
import java.io.Serializable;public class QueryVo implements Serializable{/*** 自己属性*/private String name;/*** user属性*/private User user;/*** role属性*/private Role role;public String getName() {return name;}public void setName(String name) {this.name = name;}public User getUser() {return user;}public void setUser(User user) {this.user = user;}public Role getRole() {return role;}public void setRole(Role role) {this.role = role;}
}

包装类查询方法

//包装类查询
List<User> findByVo(QueryVo vo);
<!-- resultType 表示findByVo方法的返回值类型 -->
<!-- 包装类测试查询 -->
<select id="findByVo" parameterType="com.qcby.domain.QueryVo" resultType="com.qcby.domain.User">select * from user where username = #{user.username}
</select>

测试

package com.qcby.mapper;import com.qcby.domain.QueryVo;
import com.qcby.domain.User;
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.util.List;public class UserTest {private InputStream in;private SqlSession session;private UserMapper mapper;@Beforepublic void init() throws Exception{//加载配置文件in = Resources.getResourceAsStream("SqlMapConfig.xml");//创建工厂对象SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);// 创建Session对象session = factory.openSession();// 获取到代理对象mapper = session.getMapper(UserMapper.class);}@Afterpublic void destory() throws IOException {//关闭资源in.close();session.close();}@Testpublic void findByVoTest() throws Exception {// 创建 QueryVo 对象QueryVo vo = new QueryVo();User user = new User();user.setUsername("老王"); // 设置查询条件vo.setUser(user);// 执行查询List<User> list = mapper.findByVo(vo);for (User u : list) {System.out.println(u);}
}

2. resultType

  1. 返回简单数据类型

                int double long String

  1. 返回POJO数据类型

                返回User对象类型

  1. resultMap结果类型

                resultType可以指定pojo将查询结果映射为pojo,但需要pojo的属性名和sql查询的列名一致方可映射成功。 如果sql查询字段名和pojo的属性名不一致,可以通过resultMap将字段名和属性名作一个对应关系 ,resultMap实质上还需要将查询结果映射到pojo对象中。 resultMap可以实现将查询结果映射为复杂类型的pojo,比如在查询结果映射对象中包括pojo和list实现一对一查询和一对多查询。

  • resultMap 用于定义数据库字段与Java实体类属性之间的映射关系。
  • id="userMap" 是映射的唯一标识,方便后续复用。
  • 每个<result>标签将数据库表字段映射到对应的 Java 属性。
//使用resultMap映射,查询所有用户
List<User> findUsers();
<!-- 演示resultMap配置 -->
<select id="findUsers" resultMap="userMap">select id as _id,username as _username,birthday as _birthday,sex as _sex,address as _address from user
</select>
<!-- 配置resultMap,用来进行数据封装id="唯一的名称,用来被引用的"type="进行封装数据的类型"
-->
<resultMap id="userMap" type="com.qcby.domain.User"><!--property="JavaBean中的属性"column="表中的字段"--><result property="id" column="_id"/><result property="username" column="_username"/><result property="birthday" column="_birthday"/><result property="sex" column="_sex"/><result property="address" column="_address"/>
</resultMap>

property 和 column:

  • property:对应 Java 类中的属性。
  • column:对应数据库表中的字段。

SQL查询:

  • 使用别名(AS)重命名数据库字段,使其与 resultMap 的 column 配置一致。
  • 查询的字段 id, username, birthday, sex, address 分别重命名为 _id, _username, _birthday, _sex, _address。

测试

@Test
public void findUsersTest() throws Exception{//查询所有用户信息List<User> users = mapper.findUsers();for(User user : users){System.out.println(user);}
}

第三章:SqlMapConfig.xml配置文件

1.在项目中定义jdbc.properties属性文件,存储数据库的相关的信息,统一管理。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!--<properties resource="jdbc.properties"></properties>读取外部的配置文件resource="文件的相对路径写法"。例如:jdbc.properties 或者 com/qcby/xxx/jdbc.properties--><properties resource="jdbc.properties"></properties><!-- 定义别名 --><typeAliases><!--把com.qcby.domain.User使用user别名来显示,别名user User USER 都可以,默认是忽略大写的<typeAlias type="com.qcby.domain.User" alias="user"/>--><!-- 针对com.qcby.domain包下所有的类,都可以使用当前的类名做为别名 --><package name="com.qcby.domain"/></typeAliases><!--<properties><property name="jdbc.driver" value="com.mysql.jdbc.Driver"/><property name="jdbc.url" value="jdbc:mysql://localhost:3306/mybatis_db"/><property name="jdbc.username" value="root"/><property name="jdbc.password" value="2020"/></properties>--><!--配置连接数据库的环境environments:可以配置多个连接数据库的环境属性:default:设置默认使用的环境的id--><environments default="mysql"><!--environment:用来配置莫格具体的环境属性:id,表示连接数据库的环境的唯一表示,不能重复--><environment id="mysql"><!--transactionManager:设置事务管理方式属性:type:"JDBC|MANAGED"JDBC:表示当前环境中,执行sql时,使用的是JDBC中原生的事务管理方法事务的提交或回滚需要手动处理MANAGED:被管理,例如Spring--><transactionManager type="JDBC"/><!--dataSource:配置数据源属性type:“POOLED|UNPOOLED|JNDI”POOLED:表示使用数据库连接池缓存数据库的连接UNPOOLED:表示不使用数据库连接池JNDI:表示使用上下文中的数据源--><!-- 配置是否需要使用连接池,POOLED使用,UNPOOLED不使用,这里使用的是mybatis自带的数据库连接池--><dataSource type="POOLED"><property name="driver" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></dataSource></environment></environments><!-- 加载映射的配置文件 --><mappers><mapper resource="com/qcby/mapper/UserMapper.xml"/><!--<package name="com.qcby.mapper"/>--></mappers>
</configuration>

jdbc.properties属性文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis_db
jdbc.username=root
jdbc.password=2020

2. 类型别名定义

  1. MyBatis自已有类型别名的注册类,咱们编写int或者integer通过注册可以找到java.lang.Integer
  2. 咱们自己也可以进行别名的注册

SqlMapConfig.xml的配置文件

<!-- 定义别名 -->
<typeAliases><!--把com.qcby.domain.User使用user别名来显示,别名user User USER 都可以,默认是忽略大写的<typeAlias type="com.qcby.domain.User" alias="user"/>--><!-- 针对com.qcby.domain包下所有的类,都可以使用当前的类名做为别名 --><package name="com.qcby.domain"/>
</typeAliases>

UserMapper.xml的配置文件使用别名

<!--resultType="com.qcby.domain.User"原来是全路径resultType="user" 现在使用的是别名的方式-->
<select id="findAll" resultType="user">select * from user
</select>

关键字:不用备案的域名_万网封停慧聪网_搜索引擎论文3000字_免费外链代发

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: