当前位置: 首页 > news >正文

长图可以在哪些网站做做彩票网站推广

长图可以在哪些网站做,做彩票网站推广,万维网包括哪些网站,wordpress 菜单 手机端上篇博客我们围绕Mybatis链接数据库进行了相关概述#xff0c;并对Mybatis的配置文件进行详细的描述#xff0c;本篇博客也是建立在上篇博客之上进行的#xff0c;在上面博客搭建的框架基础上#xff0c;我们对MyBatis实现简单的增删改查操作进行重点概述#xff0c;在MyB…上篇博客我们围绕Mybatis链接数据库进行了相关概述并对Mybatis的配置文件进行详细的描述本篇博客也是建立在上篇博客之上进行的在上面博客搭建的框架基础上我们对MyBatis实现简单的增删改查操作进行重点概述在MyBatis中实现简单的增删改查算是我们在处理业务的时候经常干的事情使用Mybatis可以帮助我们将数据库操作封装在映射文件或者映射接口中让开发人员可以通过简单的配置或者接口方法来执行数据库操作进而无需重复编写繁琐的SQL,并且可以灵活编写SQL语句可以根据实际需求进行SQL拼接从而提高数据库操作的灵活性和可用性。 项目目录结构 PS: 上述的Service层是我为了按照规范进行开发创建的相关类实际开发中则需要按照上述规范进行而本篇博客我们将不会使用到service层所以读者可以无需创建Service和ServiceImpl。 关注点 MyBatis实现简单的增删改查也会实现MyBatis实现一些相对复杂的查询功能其中包括查询List集合查询一个实体类对象以及查询单个数据查询单条为Map的集合和多条Map的集合。MyBatis获取参数值的两种方式 ${}和#{}特殊SQL的执行模糊查询批量删除动态设置表名添加功能获取自增的主键自定义映射resultMap多对一和一对多映射关系处理 数据库 CREATE TABLE test.user (id int(11) NOT NULL,username varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,name varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,sex varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,PRIMARY KEY (id) USING BTREE ) ENGINE InnoDB CHARACTER SET utf8 COLLATE utf8_bin ROW_FORMAT Dynamic;CREATE TABLE test.book (uid int(11) NOT NULL COMMENT 用户id,book varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 用户借的书的名称,cool varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT cool星级,PRIMARY KEY (uid) USING BTREE ) ENGINE InnoDB CHARACTER SET utf8 COLLATE utf8_bin ROW_FORMAT Dynamic;实体Bean public class Book {private Integer uid;private String book;private String cool;public Book() {}public Book(Integer uid, String book, String cool) {this.uid uid;this.book book;this.cool cool;}public Integer getUid() {return uid;}public void setUid(Integer uid) {this.uid uid;}public String getBook() {return book;}public void setBook(String book) {this.book book;}public String getCool() {return cool;}public void setCool(String cool) {this.cool cool;}Overridepublic String toString() {return Book{ , uid uid , book book \ , cool cool \ };} }public class User {private int id;private String name;private String username;private String sex;private Book book;private Integer uid;private String bookName;private String cool;Overridepublic String toString() {return User{ id id , name name \ , username username \ , sex sex \ , book book };}public Integer getUid() {return uid;}public void setUid(Integer uid) {this.uid uid;}public String getBookName() {return bookName;}public void setBookName(String bookName) {this.bookName bookName;}public String getCool() {return cool;}public void setCool(String cool) {this.cool cool;}public Book getBook() {return book;}public void setBook(Book book) {this.book book;}public int getId() {return id;}public void setId(int id) {this.id id;}public String getName() {return name;}public void setName(String name) {this.name name;}public String getUsername() {return username;}public void setUsername(String username) {this.username username;}public String getSex() {return sex;}public void setSex(String sex) {this.sex sex;}public User(int id, String name, String username, String sex) {this.id id;this.name name;this.username username;this.sex sex;}public User() {} }Mapper映射层接口 Mapper public interface UserMapper {/*** 查询用户对象*/User selectUser(Param(user) User user);/*** 插入用户数据*/int insertUser(User user);/*** 更新数据*/int updateUser(Param(user) User user);/*** 删除用户数据*/int deleteUser(int id);/*** 批量删除用户数据*/int deleteUserBatch(Param(ids) String ids);/*** 查询所有用户数据*/ListUser selectAll();/*** 查询单条数据并转化为Map对象数据*/MapString,Object getUserToMap(Param(id) int id);/*** 查询多条数据斌并转化为Map对象数据*/ListMapString,Object get100UserToMap();/*** 查询多条数据并转换为Map对象的数据的第二种方式*/MapKey(id)MapInteger,User get100UserToMap2();/*** 模糊查询*/ListUser selectUserLike(Param(user) User user);/*** 动态设置表名查询数据*/ListUser selectUserByTableName(Param(tableName) String tableName);/** 根据用户id查询信息*/User getUserById(int id);/** 管理其他表一对一查询 */User getUserBookById(int id); }Mapper接口对应的映射xml文件 关注 Mapper文件我们需要注意的是 resultTyperesultType用于指定查询结果的类型。它可以是Java的基本数据类型如int、String等也可以是自定义的Java对象。MyBatis会根据查询结果的列名和resultType的类型进行自动映射。示例代码如下 select idgetUser resultTypecom.example.UserSELECT * FROM users WHERE id #{id} /selectresultType指定了查询结果的类型为com.example.UserMyBatis会将查询结果自动映射到User对象中。 parameterTypeparameterType用于指定SQL语句的参数类型。它可以是Java的基本数据类型、Java对象或者是一个Map。示例代码如下 insert idinsertUser parameterTypecom.example.UserINSERT INTO users (id, name, age) VALUES (#{id}, #{name}, #{age}) /insertparameterType指定了插入语句的参数类型为com.example.UserMyBatis会将User对象的属性值作为参数传递给SQL语句。 idid用于唯一标识映射文件或注解中的语句。它是一个字符串可以自定义命名用于在代码中调用对应的SQL语句。示例代码如下 select idgetUserById resultTypecom.example.UserSELECT * FROM users WHERE id #{id} /selectUserMapper.xml文件 ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.miaow.mybatis.mapper.UserMapper!--resultMap设置自定义映射属性id表示自定义映射的唯一标识type查询的数据要映射的实体类的类型子标签id设置主键的映射关系result设置普通字段的映射关系association设置多对一的映射关系collection设置一对多的映射关系属性property设置映射关系中实体类中的属性名column设置映射关系中表中的字段名--resultMap iduserMap typeUser !-- 实际山和我们数据库字段别名差不多--id propertyid columnid/idresult propertyname columnname/resultresult propertyusername columnusername/resultresult propertysex columnsex/resultassociation propertybook javaTypeBookid propertyuid columnuid/idresult propertybook columnbookName/resultresult propertycool columncool/result/association/resultMap!-- 根据resultMap获取相关数据--select idgetUserById resultMapuserMap parameterTypeintselect * from user where id #{id};/select!-- 管理其他表一对一查询 --select idgetUserBookById resultMapuserMap parameterTypeintselect a.*,b.uid as uid,b.book as bookName ,b.cool as cool from user aleft join book b on a.id b.uidwhere a.id #{id}/select!-- 插入单条数据* useGeneratedKeys设置使用自增的主键* keyProperty因为增删改有统一的返回值是受影响的行数因此只能将获取的自增的主键放在传输的参数user对象的某个属性中--insert idinsertUser parameterTypecom.miaow.mybatis.bean.User useGeneratedKeystrue keyPropertyid insert into user values(#{id},#{username},#{name},#{sex})/insert!-- 更新数据 --update idupdateUser parameterTypecom.miaow.mybatis.bean.Userupdate user set name #{user.name} where id #{user.id}/update!-- 删除单条数据--delete iddeleteUser parameterTypeintdelete from user where id #{id}/delete !-- 批量删除数据--delete iddeleteUserBatch parameterTypejava.lang.Stringdelete from user where id in (${ids})/delete!-- 根据ID查询相关数据--select idselectUser resultTypecom.miaow.mybatis.bean.Userselect * from user where id #{user.id}/select !-- 查询数据库所有数据--select idselectAll resultTypecom.miaow.mybatis.bean.Userselect * from user/selectselect idgetUserToMap resultTypejava.util.Map parameterTypeintselect * from user where id #{id};/selectselect idget100UserToMap resultTypejava.util.Mapselect * from user limit 100;/selectselect idget100UserToMap2 resultTypejava.util.Mapselect * from user limit 100;/selectselect idselectUserLike resultTypecom.miaow.mybatis.bean.UserparameterTypecom.miaow.mybatis.bean.Userselect * from user where username like % #{user.username} %/select !-- 动态设置表名查询数据 --select idselectUserByTableName resultTypecom.miaow.mybatis.bean.UserparameterTypejava.lang.Stringselect * from ${tableName} limit 100/select /mapper 我们根据上述的这个XML文件进行配置进行讲解 MyBatis实现简单的增删改查也会实现MyBatis实现一些相对复杂的查询功能其中包括查询List集合查询一个实体类对象以及查询单个数据查询单条为Map的集合和多条Map的集合。 简单的新增 insert idinsertUser parameterTypecom.miaow.mybatis.bean.User useGeneratedKeystrue keyPropertyid insert into user values(#{id},#{username},#{name},#{sex})/insert我们通过SQL语句和Xml的配置文件写入SQL但是不知道眼尖的同学看到没有这里边我写了插入id实际上是我架构表的时候没有使用自增这算是我的锅如果你配置了自增我们有没有发现useGeneratedKeystrue keyPropertyid 这个语句 useGeneratedKeys设置使用自增的主键默认为False。 我们在插入数据的时候我们有时候需要直接插入数据的时候这个时候我们可能不知道我们插入的主键id是多少 这个时候我们只需要配置 useGeneratedKeys“true” keyProperty“id” 然后我们就可以直接拿到我们插入数据的主键id比如 int value userMapper.insertUser(user); int id userVo.getId();//获取插入数据后的主键id keyProperty因为增删改有统一的返回值是受影响的行数因此只能将获取的自增的主键放在传输的参数user对象的某个属性中,比如我上面的是绑定的id那么Mybatis就将返回的id值存入到实体类的与之相同的字段中。 删除单条数据 delete iddeleteUser parameterTypeintdelete from user where id #{id}/delete删除多条数据 !-- 批量删除数据--delete iddeleteUserBatch parameterTypejava.lang.Stringdelete from user where id in (${ids})/deletepublic void test8() throws IOException {InputStream is Resources.getResourceAsStream(mybatis-config.xml);SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(is);SqlSession session sqlSessionFactory.openSession(true);UserMapper userMapper session.getMapper(UserMapper.class);String i 5,6,7,8,9;int V userMapper.deleteUserBatch(i);if(V 0){System.out.println(success);}else {System.out.println(fail);}}查询一个实体类对象 User getUserById(Param(id) int id);select idgetUserById resultTypecom.miaow.mybatis.bean.Userselect * from t_user where id #{id} /select${}和#{} MyBatis获取参数值的两种方式 ${}和#{} ${}的本质就是字符串拼接#{}的本质就是占位符赋值 #{}#{}是预编译的占位符它会将参数值作为参数对象的属性值进行处理并使用预编译语句来执行数据库操作。这种方式可以提供更好的系统安全性因为参数值会被自动转义从而防止SQL注入攻击。使用#{}可以有效地防止恶意用户通过参数值注入恶意的SQL代码。 ${}${}是字符串替换的占位符它会将参数值直接替换到SQL语句中。这种方式更加灵活可以在SQL语句中使用动态的表名、列名或其他字符串。然而使用${}也带来了一些安全风险因参数值不会被自动转义可能会导致SQL注入攻击。因此使用${}时需要确保参数值的安全性例如通过输入验证或白名单过滤来防止恶意输入。 ${}使用字符串拼接的方式拼接sql若为字符串类型或日期类型的字段进行赋值时需要手动加单引号 但是#{}使用占位符赋值的方式拼接sql此时为字符串类型或日期类型的字段进行赋值时可以自动添加单引号 MyBatis中建议使用#{}原因在于其可以预防SQL注入而${}无法预防SQL注入 特殊SQL的执行模糊查询批量删除动态设置表名添加功能获取自增的主键 自定义映射 驼峰配置 主要为了解决java字段和数据库字段不一致问题。我们有两种方式一种是自定义映射一种是我们在MyBatis中配置驼峰命名的规则的自动映射。 settingssetting namemapUnderscoreToCamelCase valuetrue/ /settingsMyBatis的全局配置文件中开启驼峰命名规则的自动映射。通过设置mapUnderscoreToCamelCase属性为trueMyBatis会自动将数据库表的下划线命名转换为Java对象的驼峰命名。 自定义映射resultMap多对一和一对多映射关系处理 resultMap设置自定义映射 属性 id表示自定义映射的唯一标识 type查询的数据要映射的实体类的类型 子标签 id设置主键的映射关系 result设置普通字段的映射关系 association设置多对一的映射关系 collection设置一对多的映射关系 属性 property设置映射关系中实体类中的属性名 column设置映射关系中表中的字段名 resultMap iduserMap typeUser !-- 实际山和我们数据库字段别名差不多--id propertyid columnid/idresult propertyname columnname/resultresult propertyusername columnusername/resultresult propertysex columnsex/resultassociation propertybook javaTypeBookid propertyuid columnuid/idresult propertybook columnbookName/resultresult propertycool columncool/result/association/resultMap自定义设置表名 !-- 动态设置表名查询数据 --select idselectUserByTableName resultTypecom.miaow.mybatis.bean.UserparameterTypejava.lang.Stringselect * from ${tableName} limit 100/select/**动态设置表名查询数据 可以通过Param注解标识mapper接口中的方法参数此时会将这些参数放在map集合中以Param注解的value属性值为键以参数为值*/ ListUser selectUserByTableName(Param(tableName) String tableName);// 动态设置表名查询数据Testpublic void test9() throws IOException {InputStream is Resources.getResourceAsStream(mybatis-config.xml);SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(is);SqlSession session sqlSessionFactory.openSession(true);UserMapper userMapper session.getMapper(UserMapper.class);//根据我们传入的表名查询对应的表信息ListUser users userMapper.selectUserByTableName(user);for (User user : users) {System.out.println(user);}}测试类 public class UserTest {Resourceprivate UserService userService;//插入单条数据Testpublic void test() throws IOException {//仅仅属于Mybatis框架的相关知识解决相关问题//首先读取Mybatis配置文件InputStream is Resources.getResourceAsStream(mybatis.xml);//创建SqlSessionFactorySqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(is);//创建SqlSession//第一个参数为是否自动提交true为自动提交false为手动提交默认为false//SqlSession对象此时通过sqlSession对象所操作的sql都会提交SqlSession session sqlSessionFactory.openSession(true);//通过sqlSession对象获取mapper接口对象UserMapper userMapper session.getMapper(UserMapper.class);//执行sql,插入数据的时候我做了一个操作就获取主键的操作调用的事Mybatis的主键回调功能int i userMapper.insertUser(new User(1,miaow,罗小黑,1));if(i 0){System.out.println(success);}else {System.out.println(fail);}//提交事务//session.commit();//关闭sessionsession.close();}//查询表中所有数据Testpublic void test2() throws IOException {InputStream is Resources.getResourceAsStream(mybatis-config.xml);SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(is);SqlSession session sqlSessionFactory.openSession(true);UserMapper userMapper session.getMapper(UserMapper.class);ListUser users userMapper.selectAll();if(users null users.size() 0){System.out.println(你查询的表无数据);return;}for (User user : users) {System.out.println(user);}session.close();}//根据ID查询相关数据Testpublic void test3() throws IOException {InputStream is Resources.getResourceAsStream(mybatis-config.xml);SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(is);SqlSession session sqlSessionFactory.openSession(true);UserMapper userMapper session.getMapper(UserMapper.class);User user new User();user.setId(82);User findById userMapper.selectUser(user);System.out.println(findById);}//查询单条数据Testpublic void findByIdData() throws IOException {InputStream is Resources.getResourceAsStream(mybatis-config.xml);SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(is);SqlSession session sqlSessionFactory.openSession(true);UserMapper userMapper session.getMapper(UserMapper.class);User user userMapper.getUserById(86);System.out.println(user);}//查询单条数据为map集合Testpublic void test4() throws IOException {InputStream is Resources.getResourceAsStream(mybatis-config.xml);SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(is);SqlSession session sqlSessionFactory.openSession(true);UserMapper userMapper session.getMapper(UserMapper.class);MapString, Object userToMap userMapper.getUserToMap(520);System.out.println(userToMap);}//查询前100条数据并将数据转换为Map集合Testpublic void test5() throws IOException {InputStream is Resources.getResourceAsStream(mybatis-config.xml);SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(is);SqlSession session sqlSessionFactory.openSession(true);UserMapper userMapper session.getMapper(UserMapper.class);ListMapString,Object userToMapList userMapper.get100UserToMap();for (MapString, Object map : userToMapList) {System.out.println(map);}}//查询前100条数据并将数据转换为Map集合方式2Testpublic void findData() throws IOException {InputStream is Resources.getResourceAsStream(mybatis-config.xml);SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(is);SqlSession session sqlSessionFactory.openSession(true);UserMapper userMapper session.getMapper(UserMapper.class);MapInteger, User map userMapper.get100UserToMap2();SetInteger integers map.keySet();for (Integer integer : integers) {System.out.println(map.get(integer));}}//删除单条数据Testpublic void test6() throws IOException {InputStream is Resources.getResourceAsStream(mybatis-config.xml);SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(is);SqlSession session sqlSessionFactory.openSession(true);UserMapper userMapper session.getMapper(UserMapper.class);int i userMapper.deleteUser(82);if(i 0){System.out.println(success);}else {System.out.println(fail);}}//批量删除数据Testpublic void test8() throws IOException {InputStream is Resources.getResourceAsStream(mybatis-config.xml);SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(is);SqlSession session sqlSessionFactory.openSession(true);UserMapper userMapper session.getMapper(UserMapper.class);String i 5,6,7,8,9;int V userMapper.deleteUserBatch(i);if(V 0){System.out.println(success);}else {System.out.println(fail);}}//模糊查询Testpublic void test7() throws IOException {InputStream is Resources.getResourceAsStream(mybatis-config.xml);SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(is);SqlSession session sqlSessionFactory.openSession(true);UserMapper userMapper session.getMapper(UserMapper.class);User user new User();user.setUsername(K);ListUser users userMapper.selectUserLike(user);for (User user1 : users) {System.out.println(user1);}}// 动态设置表名查询数据Testpublic void test9() throws IOException {InputStream is Resources.getResourceAsStream(mybatis-config.xml);SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(is);SqlSession session sqlSessionFactory.openSession(true);UserMapper userMapper session.getMapper(UserMapper.class);ListUser users userMapper.selectUserByTableName(user);for (User user : users) {System.out.println(user);}}//更新表中数据Testpublic void test10() throws IOException {InputStream is Resources.getResourceAsStream(mybatis-config.xml);SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(is);SqlSession session sqlSessionFactory.openSession(true);UserMapper userMapper session.getMapper(UserMapper.class);User user new User();user.setId(58);user.setName(罗小黑);int i userMapper.updateUser(user);if(i 0){System.out.println(success);}else {System.out.println(fail);}}// association一对一联查Testpublic void test11() throws IOException {InputStream is Resources.getResourceAsStream(mybatis-config.xml);SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(is);SqlSession session sqlSessionFactory.openSession(true);UserMapper userMapper session.getMapper(UserMapper.class);User user userMapper.getUserBookById(520);System.out.println(user);} }
http://www.hkea.cn/news/14317668/

相关文章:

  • 保定专业网站制作网站模版 蓝色
  • 浙江省建设厅网站地址足球比分网站建设
  • 外贸建站哪个最便宜网站开发知识
  • 东莞网站系统找哪里长沙网络营销优势与劣势
  • 1 建设网站目的上海seo网站建设
  • 进博会上海2022怎么做网站seo优化
  • 织梦cms网站更新wordpress主题有什么用
  • 百度云 做视频网站西安做网站公司哪家行
  • 舟山网站建设哪家好计算机专业是干什么的
  • 建设部机关服务中心网站wordpress手机访问不了
  • 班级网站建设开题报告工作设计室网站
  • 购物网站排名2018购物网站建设方案ppt
  • 建设网站坂田腾讯云wordpress
  • wordpress企业网站园艺wordpress模板
  • 怎么做微帮网站宝安中心医院
  • 优秀排版设计网站网站建设欲网站维护
  • 珠海网站开发公司哪家好电子商务网站例
  • 瓜子二手车网站开发温州seo排名优化
  • wordpress建站软件网站 在百度搜索不到
  • 托里县城乡建设局网站菜鸟教程网站
  • 做网站网页兼容性高端建站网站的
  • 如何修改网站备案信息车间管理系统
  • 做公司网站需要准备什么科目国外网站卖货平台
  • 南同网站建设wordpress 平台
  • 网站登记备案查询做推广的网站带宽需要多少合适
  • 网站建设实验报告闵行北京网站建设
  • 中南大学双一流建设网站wordpress做过的大型网站
  • 网站服务器模式合肥网站快速排名提升
  • 单一产品网站如何做seo网站中竖导航栏怎么做
  • 关于学校网站建设的请示做p2p投资理财的网站